Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
d08a91c
docs: add current LifeOS product requirements
seonghobae Aug 9, 2026
b2de55c
docs: add current LifeOS technical requirements
seonghobae Aug 9, 2026
3b075c3
docs: add current LifeOS logical data model
seonghobae Aug 9, 2026
44e6f3e
docs: add code-current LifeOS UML views
seonghobae Aug 9, 2026
50bda95
docs: add LifeOS API and event contracts
seonghobae Aug 9, 2026
900575b
docs: add privacy and data lifecycle contract
seonghobae Aug 9, 2026
9f2aeb2
docs: add LifeOS threat model
seonghobae Aug 9, 2026
bd0c941
docs: add LifeOS test strategy
seonghobae Aug 9, 2026
655a01b
docs: add LifeOS operability contract
seonghobae Aug 9, 2026
3b8ed9c
docs: add release and migration contract
seonghobae Aug 9, 2026
0d30461
docs: add current standards traceability
seonghobae Aug 9, 2026
fea5dc9
docs: add current requirements traceability
seonghobae Aug 10, 2026
0a47b52
docs: assess LifeOS documentation fitness
seonghobae Aug 10, 2026
e5cffdb
docs(adr): align identifier decision with canonical contract
seonghobae Aug 10, 2026
f65f49e
docs(adr): align OAuth decision with canonical contract
seonghobae Aug 10, 2026
d214db4
docs(adr): record service-owned persistence
seonghobae Aug 10, 2026
6eb21bc
docs(adr): record inert AI authority
seonghobae Aug 10, 2026
375bf3a
docs(adr): record purpose-bound sensitive access
seonghobae Aug 10, 2026
01d53aa
docs(adr): record work-conserving maintenance
seonghobae Aug 10, 2026
fc852f0
docs(adr): record canonical documentation graph
seonghobae Aug 10, 2026
dcea66e
docs(adr): record buyer-gap evidence separation
seonghobae Aug 10, 2026
fe96eb4
docs(adr): record LifeOS product architecture evolution
seonghobae Aug 10, 2026
20eb7b8
docs(adr): add canonical ADR index
seonghobae Aug 10, 2026
954c3fd
docs: link canonical product documentation
seonghobae Aug 10, 2026
d6d63b8
test(docs): enforce canonical documentation contract
seonghobae Aug 10, 2026
44b3986
test(docs): exclude table headers from status validation
seonghobae Aug 10, 2026
0cf592f
docs: align Claude handoff with canonical documentation graph
seonghobae Aug 10, 2026
adbed7d
test(docs): parse only explicit status table columns
seonghobae Aug 10, 2026
68214ca
docs: reconcile root architecture with current product authority
seonghobae Aug 10, 2026
68b5580
test(docs): expose semantic recency gaps
seonghobae Aug 10, 2026
25db5fc
docs(adr): separate verification evidence identities
seonghobae Aug 10, 2026
61a6586
docs(adr): index verification evidence identity
seonghobae Aug 10, 2026
c0eda4b
docs(prd): trace active rights and verification slices
seonghobae Aug 10, 2026
44174f3
docs(traceability): bind active rights and evidence work
seonghobae Aug 10, 2026
938cdaf
docs(api): distinguish active rights and verification contracts
seonghobae Aug 10, 2026
813d4c0
docs(uml): add rights and verification evidence flows
seonghobae Aug 10, 2026
1db908d
docs(assessment): record semantic recency and active slices
seonghobae Aug 10, 2026
2ad6788
docs(trd): reconcile active rights and evidence boundaries
seonghobae Aug 10, 2026
1cfe7c9
docs(prd): reconcile protected and active product evidence
seonghobae Aug 10, 2026
a6f20c1
docs(traceability): reconcile current protected and active evidence
seonghobae Aug 10, 2026
f8f656e
docs(api): reconcile rights, calendar, and plugin contract maturity
seonghobae Aug 10, 2026
5867e94
docs(data): distinguish active calendar and plugin authority
seonghobae Aug 10, 2026
7ee372e
docs(privacy): reconcile protected rights evidence and active credent…
seonghobae Aug 10, 2026
eda4049
docs(architecture): reconcile rights, calendar, and plugin authority
seonghobae Aug 10, 2026
04a5ff1
docs(uml): reconcile current rights, calendar, and plugin flows
seonghobae Aug 10, 2026
b8f245a
docs(assessment): refresh whole-product documentation fitness
seonghobae Aug 10, 2026
d82375e
test(docs): pin current protected and active maturity
seonghobae Aug 10, 2026
dd775cb
docs(trd): reconcile current protected and active boundaries
seonghobae Aug 10, 2026
b44d046
docs(adr): define external integration authority boundary
seonghobae Aug 10, 2026
7d20977
docs(adr): index external integration authority decision
seonghobae Aug 10, 2026
40bf71c
test(docs): require integration authority ADR
seonghobae Aug 10, 2026
ab3a70d
docs(prd): promote merged calendar registry evidence
seonghobae Aug 10, 2026
b8c721c
docs(traceability): promote merged calendar registry
seonghobae Aug 10, 2026
f7d85c8
docs(api): promote calendar registry to protected main
seonghobae Aug 10, 2026
0d8090d
docs(data): promote calendar connection persistence
seonghobae Aug 10, 2026
e063fa1
docs(privacy): promote calendar connection foundation
seonghobae Aug 10, 2026
d9b38e3
docs(architecture): promote protected calendar registry
seonghobae Aug 10, 2026
362c4b7
docs(uml): promote calendar registry flow
seonghobae Aug 10, 2026
ed6df48
docs(assessment): reconcile merged calendar foundation
seonghobae Aug 10, 2026
e07ef75
test(docs): promote merged calendar registry status
seonghobae Aug 10, 2026
825ab8e
docs(prd): promote plugin authority and verification successor
seonghobae Aug 10, 2026
99355e8
docs(adr): promote integration authority evidence to main
seonghobae Aug 10, 2026
5d248bf
docs(trd): promote protected integration authority and clean verifica…
seonghobae Aug 10, 2026
f6b6b9b
docs(prd): reconcile calendar revocation and user context
seonghobae Aug 10, 2026
d74b071
docs(traceability): reconcile latest protected and active lanes
seonghobae Aug 10, 2026
ad5b98c
docs(api): reconcile calendar revocation, plugin authority, and verif…
seonghobae Aug 10, 2026
2dc610f
docs(data): reconcile protected calendar and plugin authority
seonghobae Aug 10, 2026
3efddd0
docs(privacy): reconcile calendar and plugin authority lifecycle
seonghobae Aug 10, 2026
2a3fc06
docs(architecture): reconcile protected integration authority and ver…
seonghobae Aug 10, 2026
71ac058
docs(uml): reconcile current integration and verification flows
seonghobae Aug 10, 2026
09f7d24
docs(assessment): refresh current protected and active maturity
seonghobae Aug 10, 2026
6bd1005
test(docs): reconcile protected and active lifecycle truth
seonghobae Aug 10, 2026
83bc9cc
docs(adr): extend integration authority acceptance evidence
seonghobae Aug 10, 2026
e91118b
docs(prd): promote calendar user context and track plugin persistence
seonghobae Aug 10, 2026
62744aa
docs(traceability): promote calendar user context and track plugin pe…
seonghobae Aug 10, 2026
57d0112
docs(adr): define test-time compute authority
seonghobae Aug 10, 2026
48a3b1c
docs(adr): index test-time compute authority
seonghobae Aug 10, 2026
5cf8cd4
docs(research): trace model orchestration evidence
seonghobae Aug 10, 2026
3ffc6d5
test(docs): require current model and evidence authority
seonghobae Aug 10, 2026
7208697
docs(adr): satisfy compute authority contract
seonghobae Aug 10, 2026
6d968a4
docs(adr): govern test-time compute and model development authority
seonghobae Aug 10, 2026
cdc7ddb
docs(adr): align compute authority filename
seonghobae Aug 10, 2026
eb2bbdc
docs(adr): point compute authority to canonical ADR
seonghobae Aug 10, 2026
53dbf63
docs(adr): make role effort dimension explicit
seonghobae Aug 10, 2026
0d60fb9
test(docs): align compute authority with canonical sources
seonghobae Aug 10, 2026
28333d7
docs(traceability): reconcile protected verification evidence
seonghobae Aug 10, 2026
80dc468
docs(uml): reconcile protected authority and model evaluation
seonghobae Aug 10, 2026
8771499
docs(prd): reconcile verification maturity
seonghobae Aug 10, 2026
4b3dc43
docs(architecture): reconcile protected verification and compute auth…
seonghobae Aug 10, 2026
74a8bb4
docs(trd): reconcile protected evidence and plugin persistence
seonghobae Aug 10, 2026
22a8ef2
docs(api): reconcile protected calendar and verification contracts
seonghobae Aug 10, 2026
86ed17f
docs(data): reconcile protected calendar and active plugin persistence
seonghobae Aug 10, 2026
87532de
docs(assessment): close semantic authority gaps
seonghobae Aug 10, 2026
63e9fff
docs(privacy): reconcile integration maturity
seonghobae Aug 10, 2026
dcf3c6b
docs(changelog): record canonical compute authority
seonghobae Aug 10, 2026
4601d81
docs(traceability): reconcile protected and active LifeOS authority
seonghobae Aug 10, 2026
9b7d389
docs(changelog): reconcile canonical line with protected main
seonghobae Aug 10, 2026
bee0ba4
docs: reconcile documentation fitness with current protected main
seonghobae Aug 10, 2026
61b3704
docs: reconcile active successors and data-rights work
seonghobae Aug 10, 2026
31b11bd
merge(docs): reconcile canonical architecture with protected main
seonghobae Aug 12, 2026
7229c13
merge(docs): incorporate protected OpenCode bootstrap
seonghobae Aug 12, 2026
a4c39a1
test(docs): reject stale canonical maturity claims
seonghobae Aug 12, 2026
4065c9b
docs: align canonical maturity with protected main
seonghobae Aug 12, 2026
cdac1d0
docs: reconcile active Calendar and AI authority work
seonghobae Aug 12, 2026
b838ac8
docs: reconcile protected contributor and calendar slices
seonghobae Aug 13, 2026
85ea2d9
Merge b838ac8830291bd237f01b4c93aa3006705e4429 into 65be5101b977bd3f1…
seonghobae Aug 13, 2026
53bc261
docs: reconcile protected review contributor maturity
seonghobae Aug 13, 2026
93bed5f
docs: reconcile current protected and active maturity
seonghobae Aug 13, 2026
b25f806
test(docs): bind maturity checks to exact PR rows
seonghobae Aug 13, 2026
46b955b
docs(api): reconcile protected and active authority contracts
seonghobae Aug 13, 2026
55dbe19
docs(architecture): reconcile protected stores and active authority
seonghobae Aug 13, 2026
be31387
docs(architecture): preserve executable semantic anchors
seonghobae Aug 13, 2026
ced4e4c
docs(adr): move service-owned persistence to ADR 0013
seonghobae Sep 3, 2026
03d430e
docs(adr): remove colliding ADR 0003 filename
seonghobae Sep 3, 2026
91da2d4
docs(adr): resolve protected ADR 0003 collision
seonghobae Sep 3, 2026
3aa9449
docs(adr): carry accepted identifier references into canonical graph
seonghobae Sep 3, 2026
23f1cf6
docs(adr): carry accepted OAuth references into canonical graph
seonghobae Sep 3, 2026
4fcb952
docs: restore canonical lane ownership boundaries
seonghobae Sep 3, 2026
7516d69
chore(docs): adopt current protected main into canonical graph
seonghobae Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
236 changes: 138 additions & 98 deletions ARCHITECTURE.md

Large diffs are not rendered by default.

5 changes: 1 addition & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@ All notable changes to LifeOS are documented in this file.

## Unreleased

### Changed

- Production contextual-orchestrator proposal requests now explicitly use adaptive `auto` mode and avoid provider-native structured-output passthrough, allowing the orchestration plane to meet the quality requirement and then minimize known cost while LifeOS retains strict fail-closed proposal validation.

### Added

- A canonical architecture/governance decision for model-assisted test-time compute and repository development: ADR 0012 requires a strong single-route baseline, explicit stage/decomposition/recursion/role-effort/access-topology evidence, comparable-budget justification for deeper orchestration, `NVIDIA_NIM_API_KEY` through approved OpenCode/contextual-orchestrator boundaries, and strict separation of model execution from deterministic review, merge, and release authority. This documents and reconciles existing protected-main governance/live-conformance behavior rather than claiming a new shipped product capability.
- Durable PostgreSQL plugin-installation authority with opaque UUIDv4 installation/workspace/installer identity, exact manifest digests, normalized explicit grants, bounded conflict replay, and atomic revocation evidence in the service-owned `plugin_integration` schema.
- An authenticated calendar-connection disconnect application and optional hosted HTTP composition boundary that derives workspace and requesting-user authority only from the signed `life-os.calendar-user.v1` context and returns credential-free local revocation evidence.
- A durable PostgreSQL data-rights request ledger with workspace-scoped idempotency, immutable request and terminal receipt digests, one-way completion state, and real integration evidence that erasure receipts survive removal of the source workspace and user.
Expand Down
15 changes: 9 additions & 6 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Claude operating contract for LifeOS

`AGENTS.md` is the canonical repository-wide instruction file. This document maps that contract into a concise execution order for Claude-compatible agents and must not override `AGENTS.md`, `ARCHITECTURE.md`, branch protection, or security policy.
`AGENTS.md` is the canonical repository-wide instruction file. `ARCHITECTURE.md` is the durable system-boundary source of truth. The canonical product documentation graph is indexed from `README.md` and includes PRD, TRD, ADRs, Data Model, UML, API contracts, threat/privacy/test/operability/release/standards/traceability views. This document maps those authorities into a concise execution order for Claude-compatible agents and must not override live repository policy.

## Execution order

Expand All @@ -10,9 +10,9 @@
4. Make the smallest complete correction, including tests and documentation.
5. Re-run the exact pull-request head and resolve only threads whose finding is actually addressed.
6. Merge only when required checks pass, no actionable findings remain, and the repository's merge policy accepts the exact head.
7. Continue with the highest-impact buyer-visible gap after the pull-request queue is empty.
7. Continue with the highest-impact buyer-visible gap after the pull-request queue is empty or a current lane becomes locally blocked.

Routine progress narration is not a substitute for repository evidence. Record decisions in code, tests, ADRs, specifications, plans, runbooks, issues, and pull-request descriptions.
Routine progress narration is not a substitute for repository evidence. Record durable decisions in canonical docs/ADRs, code, tests, runbooks, issues, and pull-request evidence with truthful protected-main/active-PR/planned maturity.

## Non-negotiable boundaries

Expand All @@ -23,7 +23,9 @@ Routine progress narration is not a substitute for repository evidence. Record d
- Internal identifiers are UUIDv4 strings; numeric external identifiers are mapped through an explicit provider-identity boundary.
- Database objects use multiword `snake_case` names unless an external protocol mandates a different spelling.
- Services do not read or mutate another service's database tables.
- Browser-local state is not durable until accepted by the owning service.
- AI proposals remain inert until a separately authorized user-confirmed execution capability exists.
- Sensitive access is tenant/resource/purpose/lifetime/audit bound rather than relying on blanket masking.
- Mathematical and psychometric numerical kernels require Rust, deterministic CPU/GPU execution boundaries, realistic parameter-recovery tests, multilevel or multiple-membership structure, and temporal modeling where applicable.

## LLM orchestration decisions
Expand All @@ -36,12 +38,13 @@ Live model tests may use `NVIDIA_NIM_API_KEY`. Deterministic pull-request checks

- Production declarations have explanatory docstrings.
- Changed production code maintains 100% statement, branch, function, and line coverage where the package enforces those gates.
- Tests model realistic domain outcomes, not only mocked implementation calls.
- Tests model realistic domain outcomes, including PostgreSQL/browser/concurrency/security behavior where applicable.
- Standards and research claims are documented with APA 7 references and publication status is distinguished from drafts or preprints.
- Canonical status fields use the exact repository vocabulary and never mix PR/issue qualifiers into the status value.
- `CHANGELOG.md` records buyer-visible behavior.
- `ARCHITECTURE.md` and relevant feature ADR/specification files record boundary changes.
- PRD/TRD/Architecture/ADR/UML/Data Model/API/Security/Privacy/Test/Operability/Release/Traceability views are reconciled when their boundary changes.
- Release tags and versions are created only after the repository proves release readiness; unreleased work stays under `Unreleased`.

## Safe escalation

Escalate only for a decision or permission that cannot be resolved from repository policy, tests, standards, or available credentials. Waiting for checks or reviews is not itself an escalation condition; continue independent analysis, documentation, or the next non-conflicting planned task while preserving merge safety.
Escalate only for a decision or permission that cannot be resolved from repository policy, tests, standards, or available credentials. Waiting for checks or reviews is not itself an escalation condition; continue independent analysis, documentation, testing, or the next non-conflicting planned task while preserving merge safety.
32 changes: 27 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,13 @@ The calendar integration service supports explicit `caldav` and `google` provide

CalDAV writes use deterministic resource names, `If-None-Match: *` for creation, and strong `If-Match` ETags for updates. Google Calendar writes use a deterministic API event identifier to prevent duplicate creation and the same strong-ETag precondition for updates. Neither adapter exposes delete, move, or copy operations through the LifeOS provider contract.

`GOOGLE_CALENDAR_ACCESS_TOKEN` is an operator-supplied runtime secret for this bounded adapter slice. Per-user OAuth credential storage, token refresh, revocation, calendar discovery, and encrypted persistence remain deferred and must be implemented before a multi-user hosted deployment enables Google Calendar synchronization.
The calendar service now derives workspace authority from a bounded signed server context rather than a client-selected legacy workspace header. `GOOGLE_CALENDAR_ACCESS_TOKEN` remains an operator-supplied development/runtime secret for the current provider slice. Per-user OAuth credential storage, token refresh, revocation, calendar discovery, selection, and encrypted persistence remain tracked by issue #129 before hosted multi-user Google Calendar operation can be considered complete.

## Plugin contract

The `@life-os/plugin-sdk` package defines strict versioned manifests, tenant-scoped CloudEvents 1.0 structured JSON envelopes, deterministic canonical serialization, and HMAC-SHA256 delivery-proof helpers. The integration service exposes contract discovery, manifest validation, and event preparation only.

This slice deliberately has no plugin installation, secret persistence, outbound webhook delivery, inbound commands, or direct database access. Those require separately reviewed least-privilege authorization, durable audit, and SSRF-safe delivery boundaries.
This slice deliberately has no plugin installation, secret persistence, outbound webhook delivery, inbound commands, or direct database access. Those require separately reviewed least-privilege authorization, durable audit, and SSRF-safe delivery boundaries under issue #130.

## Backup and recovery

Expand All @@ -109,9 +109,32 @@ This is a public repository. It contains synthetic examples only. Personal goals

The upstream project does not operate every LifeOS deployment. A self-hosting organization controls its deployment data and must establish its own privacy notice, retention policy, security controls, subprocessors, and legal basis. See the [upstream privacy notice](docs/legal/privacy.md) and [upstream project terms](docs/legal/terms.md) for the upstream project boundary.

## Documentation
## Canonical product documentation

The following graph is the whole-product source of truth alongside protected-main code and root `AGENTS.md` / `ARCHITECTURE.md`:

- [Product requirements](docs/PRD.md)
- [Technical requirements](docs/TRD.md)
- [Architecture decisions](ARCHITECTURE.md)
- [ADR index](docs/adr/README.md)
- [Logical data model / ERD](docs/DATA_MODEL.md)
- [UML and interaction views](docs/UML.md)
- [API and event contracts](docs/API_CONTRACTS.md)
- [Threat model](docs/THREAT_MODEL.md)
- [Privacy and data lifecycle](docs/PRIVACY_DATA_LIFECYCLE.md)
- [Test strategy](docs/TEST_STRATEGY.md)
- [Operability](docs/OPERABILITY.md)
- [Release, migration, and rollback](docs/RELEASE_AND_MIGRATION.md)
- [Standards and research traceability](docs/STANDARDS_TRACEABILITY.md)
- [Requirements/evidence traceability](docs/TRACEABILITY.md)
- [Documentation fitness assessment](docs/DOCUMENTATION_ASSESSMENT.md)
- [Vulnerability reporting](SECURITY.md)

Scoped feature designs, plans and runbooks remain useful evidence but do not override this code-current canonical graph.

- Product and architecture design: `docs/superpowers/specs/2026-08-02-life-os-design.md`
## Additional documentation

- Product and architecture design history: `docs/superpowers/specs/2026-08-02-life-os-design.md`
- Foundation implementation plan: `docs/superpowers/plans/2026-08-02-life-os-foundation.md`
- Gateway service-level objectives: `docs/operations/service-level-objectives.md`
- Planning-service service-level objectives: `docs/operations/planning-service-level-objectives.md`
Expand All @@ -120,7 +143,6 @@ The upstream project does not operate every LifeOS deployment. A self-hosting or
- [Production Kubernetes deployment runbook](docs/operations/production-deployment.md)
- [Upstream privacy notice](docs/legal/privacy.md)
- [Upstream project terms](docs/legal/terms.md)
- [Vulnerability reporting](SECURITY.md)

## Contributing

Expand Down
23 changes: 19 additions & 4 deletions apps/ai-service/src/contextual-orchestrator-proposal-model.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ describe('contextual orchestrator configuration', () => {
});

describe('ContextualOrchestratorProposalModel', () => {
it('sends a no-tools adaptive request and returns untrusted output', async () => {
it('sends a no-tools schema-constrained request and returns untrusted output', async () => {
const draft = {
summary: 'Prioritize launch readiness.',
rationale: ['The checklist is the active critical path.'],
Expand Down Expand Up @@ -166,8 +166,6 @@ describe('ContextualOrchestratorProposalModel', () => {

const body = JSON.parse(String(init?.body)) as Record<string, unknown>;
expect(body.model).toBe('contextual-orchestrator');
expect(body.orchestration_mode).toBe('auto');
expect(body.include_orchestration_trace).toBe(false);
expect(body.tools).toBeUndefined();
expect(body.stream).toBe(false);
expect(body.temperature).toBe(0);
Expand All @@ -181,7 +179,24 @@ describe('ContextualOrchestratorProposalModel', () => {
content: JSON.stringify(request),
});

expect(body.response_format).toBeUndefined();
const responseFormat = body.response_format as Record<string, unknown>;
expect(responseFormat.type).toBe('json_schema');
const jsonSchema = responseFormat.json_schema as Record<string, unknown>;
expect(jsonSchema.name).toBe('life_os_inert_proposal_draft');
expect(jsonSchema.strict).toBe(true);
const schema = jsonSchema.schema as Record<string, unknown>;
expect(schema.$schema).toBe('https://json-schema.org/draft/2020-12/schema');
expect(schema.additionalProperties).toBe(false);
expect(schema.required).toEqual(['summary', 'rationale', 'operations']);
const properties = schema.properties as Record<string, unknown>;
const operations = properties.operations as Record<string, unknown>;
const operationItem = operations.items as Record<string, unknown>;
expect(operationItem.oneOf).toHaveLength(3);
for (const variant of operationItem.oneOf as Array<
Record<string, unknown>
>) {
expect(variant.additionalProperties).toBe(false);
}
});

it('accepts one valid completion at the exact response-byte limit', async () => {
Expand Down
21 changes: 9 additions & 12 deletions apps/ai-service/src/contextual-orchestrator-proposal-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,21 +208,10 @@ export const CONTEXTUAL_ORCHESTRATOR_PROPOSAL_SCHEMA = deepFreeze({
},
});

/**
* Builds one immutable no-tools adaptive orchestration request.
*
* `auto` delegates model/provider choice, workflow depth, verification,
* fallback, and known-price optimization to contextual-orchestrator. Trace
* disclosure stays private by default, and provider-native `response_format`
* is deliberately omitted because the gateway proxies that feature to one
* worker instead of applying adaptive orchestration. LifeOS still validates
* every returned proposal through its strict local domain contract.
*/
/** Builds one immutable no-tools OpenAI-compatible structured-output request. */
function requestBody(input: ProposalRequest): string {
return JSON.stringify({
model: 'contextual-orchestrator',
orchestration_mode: 'auto',
include_orchestration_trace: false,
temperature: 0,
stream: false,
messages: [
Expand All @@ -232,6 +221,14 @@ function requestBody(input: ProposalRequest): string {
},
{ role: 'user', content: JSON.stringify(input) },
],
response_format: {
type: 'json_schema',
json_schema: {
name: 'life_os_inert_proposal_draft',
strict: true,
schema: CONTEXTUAL_ORCHESTRATOR_PROPOSAL_SCHEMA,
},
},
});
}

Expand Down
Loading
Loading