@xfey/tutti 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -0
- package/dist/approvals/index.d.ts +3 -0
- package/dist/approvals/index.js +3 -0
- package/dist/approvals/manager.d.ts +47 -0
- package/dist/approvals/manager.js +180 -0
- package/dist/approvals/projections.d.ts +34 -0
- package/dist/approvals/projections.js +444 -0
- package/dist/artifacts/index.d.ts +4 -0
- package/dist/artifacts/index.js +4 -0
- package/dist/artifacts/manifest.d.ts +48 -0
- package/dist/artifacts/manifest.js +334 -0
- package/dist/artifacts/preview-runtime.d.ts +97 -0
- package/dist/artifacts/preview-runtime.js +585 -0
- package/dist/artifacts/static-preview.d.ts +17 -0
- package/dist/artifacts/static-preview.js +180 -0
- package/dist/chat-assistant/index.d.ts +66 -0
- package/dist/chat-assistant/index.js +268 -0
- package/dist/checks/index.d.ts +47 -0
- package/dist/checks/index.js +169 -0
- package/dist/collaboration-state/clarification-messages.d.ts +8 -0
- package/dist/collaboration-state/clarification-messages.js +180 -0
- package/dist/collaboration-state/clarification-records.d.ts +27 -0
- package/dist/collaboration-state/clarification-records.js +266 -0
- package/dist/collaboration-state/clarification-round-writes.d.ts +14 -0
- package/dist/collaboration-state/clarification-round-writes.js +58 -0
- package/dist/collaboration-state/clarification-rounds.d.ts +19 -0
- package/dist/collaboration-state/clarification-rounds.js +347 -0
- package/dist/collaboration-state/clarification-successors.d.ts +8 -0
- package/dist/collaboration-state/clarification-successors.js +318 -0
- package/dist/collaboration-state/execution-status.d.ts +3 -0
- package/dist/collaboration-state/execution-status.js +8 -0
- package/dist/collaboration-state/index.d.ts +17 -0
- package/dist/collaboration-state/index.js +16 -0
- package/dist/collaboration-state/messages.d.ts +25 -0
- package/dist/collaboration-state/messages.js +371 -0
- package/dist/collaboration-state/read-state.d.ts +7 -0
- package/dist/collaboration-state/read-state.js +136 -0
- package/dist/collaboration-state/recovery.d.ts +6 -0
- package/dist/collaboration-state/recovery.js +125 -0
- package/dist/collaboration-state/run-recording.d.ts +5 -0
- package/dist/collaboration-state/run-recording.js +216 -0
- package/dist/collaboration-state/run-results.d.ts +12 -0
- package/dist/collaboration-state/run-results.js +202 -0
- package/dist/collaboration-state/scratchpad-source-state.d.ts +46 -0
- package/dist/collaboration-state/scratchpad-source-state.js +207 -0
- package/dist/collaboration-state/scratchpad.d.ts +8 -0
- package/dist/collaboration-state/scratchpad.js +84 -0
- package/dist/collaboration-state/serialization.d.ts +16 -0
- package/dist/collaboration-state/serialization.js +71 -0
- package/dist/collaboration-state/storage-types.d.ts +136 -0
- package/dist/collaboration-state/storage-types.js +2 -0
- package/dist/collaboration-state/task-details.d.ts +5 -0
- package/dist/collaboration-state/task-details.js +25 -0
- package/dist/collaboration-state/types.d.ts +289 -0
- package/dist/collaboration-state/types.js +2 -0
- package/dist/collaboration-state/worklist.d.ts +11 -0
- package/dist/collaboration-state/worklist.js +286 -0
- package/dist/control-plane/clarification-commands.d.ts +34 -0
- package/dist/control-plane/clarification-commands.js +106 -0
- package/dist/control-plane/command-recovery.d.ts +3 -0
- package/dist/control-plane/command-recovery.js +79 -0
- package/dist/control-plane/context-sync.d.ts +47 -0
- package/dist/control-plane/context-sync.js +207 -0
- package/dist/control-plane/event-publishers.d.ts +24 -0
- package/dist/control-plane/event-publishers.js +192 -0
- package/dist/control-plane/execution-status.d.ts +13 -0
- package/dist/control-plane/execution-status.js +130 -0
- package/dist/control-plane/follow-up-context.d.ts +27 -0
- package/dist/control-plane/follow-up-context.js +93 -0
- package/dist/control-plane/follow-up-output.d.ts +53 -0
- package/dist/control-plane/follow-up-output.js +141 -0
- package/dist/control-plane/follow-up-run.d.ts +22 -0
- package/dist/control-plane/follow-up-run.js +90 -0
- package/dist/control-plane/follow-up-start.d.ts +26 -0
- package/dist/control-plane/follow-up-start.js +101 -0
- package/dist/control-plane/formatters.d.ts +12 -0
- package/dist/control-plane/formatters.js +47 -0
- package/dist/control-plane/index.d.ts +62 -0
- package/dist/control-plane/index.js +416 -0
- package/dist/control-plane/invalidations.d.ts +12 -0
- package/dist/control-plane/invalidations.js +67 -0
- package/dist/control-plane/procedure-logging.d.ts +11 -0
- package/dist/control-plane/procedure-logging.js +95 -0
- package/dist/control-plane/project-brief-refresh.d.ts +31 -0
- package/dist/control-plane/project-brief-refresh.js +105 -0
- package/dist/control-plane/project-context-bootstrap.d.ts +39 -0
- package/dist/control-plane/project-context-bootstrap.js +107 -0
- package/dist/control-plane/reference-summary-refresh.d.ts +22 -0
- package/dist/control-plane/reference-summary-refresh.js +344 -0
- package/dist/control-plane/run-lineage.d.ts +8 -0
- package/dist/control-plane/run-lineage.js +13 -0
- package/dist/control-plane/run-result-recording.d.ts +46 -0
- package/dist/control-plane/run-result-recording.js +81 -0
- package/dist/control-plane/run-scheduler.d.ts +35 -0
- package/dist/control-plane/run-scheduler.js +110 -0
- package/dist/control-plane/run-start.d.ts +30 -0
- package/dist/control-plane/run-start.js +167 -0
- package/dist/control-plane/scratchpad-auto-refresh.d.ts +32 -0
- package/dist/control-plane/scratchpad-auto-refresh.js +150 -0
- package/dist/control-plane/scratchpad-refresh-start.d.ts +60 -0
- package/dist/control-plane/scratchpad-refresh-start.js +240 -0
- package/dist/control-plane/scratchpad-refresh.d.ts +29 -0
- package/dist/control-plane/scratchpad-refresh.js +55 -0
- package/dist/control-plane/scratchpad-source-messages.d.ts +10 -0
- package/dist/control-plane/scratchpad-source-messages.js +131 -0
- package/dist/control-plane/startup-recovery.d.ts +19 -0
- package/dist/control-plane/startup-recovery.js +113 -0
- package/dist/control-plane/task-compile-continuation.d.ts +25 -0
- package/dist/control-plane/task-compile-continuation.js +127 -0
- package/dist/control-plane/task-compile-output.d.ts +29 -0
- package/dist/control-plane/task-compile-output.js +122 -0
- package/dist/control-plane/task-compile-start.d.ts +43 -0
- package/dist/control-plane/task-compile-start.js +280 -0
- package/dist/control-plane/task-proposal.d.ts +3 -0
- package/dist/control-plane/task-proposal.js +37 -0
- package/dist/control-plane/types.d.ts +155 -0
- package/dist/control-plane/types.js +2 -0
- package/dist/control-plane/workflows/index.d.ts +4 -0
- package/dist/control-plane/workflows/index.js +4 -0
- package/dist/control-plane/workflows/openai.d.ts +34 -0
- package/dist/control-plane/workflows/openai.js +411 -0
- package/dist/control-plane/workflows/structured-output-schemas.d.ts +9 -0
- package/dist/control-plane/workflows/structured-output-schemas.js +289 -0
- package/dist/control-plane/workflows/structured-output-validators.d.ts +15 -0
- package/dist/control-plane/workflows/structured-output-validators.js +295 -0
- package/dist/control-plane/workflows/structured-output.d.ts +3 -0
- package/dist/control-plane/workflows/structured-output.js +3 -0
- package/dist/control-plane/workflows/types.d.ts +274 -0
- package/dist/control-plane/workflows/types.js +2 -0
- package/dist/control-plane/worklist-terminal-feedback.d.ts +15 -0
- package/dist/control-plane/worklist-terminal-feedback.js +135 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +32 -0
- package/dist/procedure-engine/index.d.ts +56 -0
- package/dist/procedure-engine/index.js +163 -0
- package/dist/project-brief/index.d.ts +4 -0
- package/dist/project-brief/index.js +3 -0
- package/dist/project-brief/repository.d.ts +5 -0
- package/dist/project-brief/repository.js +97 -0
- package/dist/project-brief/source.d.ts +8 -0
- package/dist/project-brief/source.js +75 -0
- package/dist/project-brief/types.d.ts +40 -0
- package/dist/project-brief/types.js +2 -0
- package/dist/project-docs/context.d.ts +34 -0
- package/dist/project-docs/context.js +86 -0
- package/dist/project-timeline/index.d.ts +20 -0
- package/dist/project-timeline/index.js +100 -0
- package/dist/prompt-templates/index.d.ts +13 -0
- package/dist/prompt-templates/index.js +86 -0
- package/dist/provider-usage/index.d.ts +37 -0
- package/dist/provider-usage/index.js +227 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.js +2 -0
- package/dist/providers/openai/app-server/json-rpc.d.ts +71 -0
- package/dist/providers/openai/app-server/json-rpc.js +298 -0
- package/dist/providers/openai/app-server/permission-profile.d.ts +64 -0
- package/dist/providers/openai/app-server/permission-profile.js +67 -0
- package/dist/providers/openai/app-server/provider-config.d.ts +10 -0
- package/dist/providers/openai/app-server/provider-config.js +39 -0
- package/dist/providers/openai/app-server/read-only-procedure.d.ts +68 -0
- package/dist/providers/openai/app-server/read-only-procedure.js +293 -0
- package/dist/providers/openai/app-server/runtime-helpers.d.ts +20 -0
- package/dist/providers/openai/app-server/runtime-helpers.js +151 -0
- package/dist/providers/openai/app-server/skills.d.ts +82 -0
- package/dist/providers/openai/app-server/skills.js +222 -0
- package/dist/providers/openai/app-server/smoke-cli.d.ts +2 -0
- package/dist/providers/openai/app-server/smoke-cli.js +42 -0
- package/dist/providers/openai/app-server/smoke-helpers.d.ts +19 -0
- package/dist/providers/openai/app-server/smoke-helpers.js +125 -0
- package/dist/providers/openai/app-server/smoke-provider-input.d.ts +6 -0
- package/dist/providers/openai/app-server/smoke-provider-input.js +20 -0
- package/dist/providers/openai/app-server/smoke-types.d.ts +49 -0
- package/dist/providers/openai/app-server/smoke-types.js +20 -0
- package/dist/providers/openai/app-server/smoke.d.ts +9 -0
- package/dist/providers/openai/app-server/smoke.js +157 -0
- package/dist/providers/openai/app-server/workspace-write-run.d.ts +87 -0
- package/dist/providers/openai/app-server/workspace-write-run.js +379 -0
- package/dist/providers/openai/chat-assistant.d.ts +34 -0
- package/dist/providers/openai/chat-assistant.js +72 -0
- package/dist/providers/openai/codex-app-server.d.ts +126 -0
- package/dist/providers/openai/codex-app-server.js +147 -0
- package/dist/providers/openai/credential-store.d.ts +31 -0
- package/dist/providers/openai/credential-store.js +143 -0
- package/dist/providers/openai/credential-validation.d.ts +45 -0
- package/dist/providers/openai/credential-validation.js +190 -0
- package/dist/providers/openai/index.d.ts +13 -0
- package/dist/providers/openai/index.js +13 -0
- package/dist/providers/openai/machine-local-files.d.ts +19 -0
- package/dist/providers/openai/machine-local-files.js +55 -0
- package/dist/providers/openai/model-config.d.ts +4 -0
- package/dist/providers/openai/model-config.js +4 -0
- package/dist/providers/openai/provider-config-errors.d.ts +6 -0
- package/dist/providers/openai/provider-config-errors.js +13 -0
- package/dist/providers/openai/provider-config-shape.d.ts +3 -0
- package/dist/providers/openai/provider-config-shape.js +108 -0
- package/dist/providers/openai/provider-config-toml.d.ts +13 -0
- package/dist/providers/openai/provider-config-toml.js +113 -0
- package/dist/providers/openai/provider-config.d.ts +73 -0
- package/dist/providers/openai/provider-config.js +117 -0
- package/dist/providers/openai/provider-setup.d.ts +31 -0
- package/dist/providers/openai/provider-setup.js +88 -0
- package/dist/providers/openai/sdk-procedure-runner.d.ts +70 -0
- package/dist/providers/openai/sdk-procedure-runner.js +123 -0
- package/dist/providers/openai/token-usage.d.ts +11 -0
- package/dist/providers/openai/token-usage.js +90 -0
- package/dist/run-engine/index.d.ts +61 -0
- package/dist/run-engine/index.js +140 -0
- package/dist/run-pipeline/candidate-diff.d.ts +3 -0
- package/dist/run-pipeline/candidate-diff.js +10 -0
- package/dist/run-pipeline/openai.d.ts +41 -0
- package/dist/run-pipeline/openai.js +548 -0
- package/dist/run-pipeline/promotion-reconcile.d.ts +13 -0
- package/dist/run-pipeline/promotion-reconcile.js +138 -0
- package/dist/run-pipeline/result-projections.d.ts +39 -0
- package/dist/run-pipeline/result-projections.js +115 -0
- package/dist/run-pipeline/task-run-invocation.d.ts +6 -0
- package/dist/run-pipeline/task-run-invocation.js +130 -0
- package/dist/run-pipeline/task-run-output.d.ts +38 -0
- package/dist/run-pipeline/task-run-output.js +146 -0
- package/dist/server-shell/cli/args.d.ts +7 -0
- package/dist/server-shell/cli/args.js +30 -0
- package/dist/server-shell/cli/cli.d.ts +3 -0
- package/dist/server-shell/cli/cli.js +57 -0
- package/dist/server-shell/cli/errors.d.ts +9 -0
- package/dist/server-shell/cli/errors.js +53 -0
- package/dist/server-shell/cli/git-bootstrap.d.ts +24 -0
- package/dist/server-shell/cli/git-bootstrap.js +246 -0
- package/dist/server-shell/cli/host-lifecycle.d.ts +45 -0
- package/dist/server-shell/cli/host-lifecycle.js +298 -0
- package/dist/server-shell/cli/host-relay-status.d.ts +6 -0
- package/dist/server-shell/cli/host-relay-status.js +43 -0
- package/dist/server-shell/cli/host-runtime-endpoint.d.ts +22 -0
- package/dist/server-shell/cli/host-runtime-endpoint.js +120 -0
- package/dist/server-shell/cli/host-server-runtime.d.ts +30 -0
- package/dist/server-shell/cli/host-server-runtime.js +432 -0
- package/dist/server-shell/cli/index.d.ts +8 -0
- package/dist/server-shell/cli/index.js +8 -0
- package/dist/server-shell/cli/launch.d.ts +45 -0
- package/dist/server-shell/cli/launch.js +115 -0
- package/dist/server-shell/cli/machine-local.d.ts +69 -0
- package/dist/server-shell/cli/machine-local.js +223 -0
- package/dist/server-shell/cli/project-identity.d.ts +20 -0
- package/dist/server-shell/cli/project-identity.js +87 -0
- package/dist/server-shell/cli/relay-registration.d.ts +31 -0
- package/dist/server-shell/cli/relay-registration.js +61 -0
- package/dist/server-shell/command-idempotency/index.d.ts +44 -0
- package/dist/server-shell/command-idempotency/index.js +155 -0
- package/dist/server-shell/dev-runner/cli.d.ts +2 -0
- package/dist/server-shell/dev-runner/cli.js +10 -0
- package/dist/server-shell/dev-runner/config.d.ts +38 -0
- package/dist/server-shell/dev-runner/config.js +277 -0
- package/dist/server-shell/dev-runner/host-cli.d.ts +2 -0
- package/dist/server-shell/dev-runner/host-cli.js +22 -0
- package/dist/server-shell/dev-runner/index.d.ts +3 -0
- package/dist/server-shell/dev-runner/index.js +3 -0
- package/dist/server-shell/dev-runner/runner.d.ts +30 -0
- package/dist/server-shell/dev-runner/runner.js +236 -0
- package/dist/server-shell/http/create-server.d.ts +18 -0
- package/dist/server-shell/http/create-server.js +51 -0
- package/dist/server-shell/http/host-tunnel.d.ts +15 -0
- package/dist/server-shell/http/host-tunnel.js +154 -0
- package/dist/server-shell/http/logger.d.ts +7 -0
- package/dist/server-shell/http/logger.js +19 -0
- package/dist/server-shell/http/routes/agent-context-auth.d.ts +41 -0
- package/dist/server-shell/http/routes/agent-context-auth.js +73 -0
- package/dist/server-shell/http/routes/agent-context-errors.d.ts +6 -0
- package/dist/server-shell/http/routes/agent-context-errors.js +9 -0
- package/dist/server-shell/http/routes/agent-context-messages-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/agent-context-messages-routes.js +74 -0
- package/dist/server-shell/http/routes/agent-context-project-doc-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/agent-context-project-doc-routes.js +86 -0
- package/dist/server-shell/http/routes/agent-context-project-docs.d.ts +40 -0
- package/dist/server-shell/http/routes/agent-context-project-docs.js +98 -0
- package/dist/server-shell/http/routes/agent-context-query.d.ts +31 -0
- package/dist/server-shell/http/routes/agent-context-query.js +72 -0
- package/dist/server-shell/http/routes/agent-context-reference-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/agent-context-reference-routes.js +82 -0
- package/dist/server-shell/http/routes/agent-context-references.d.ts +21 -0
- package/dist/server-shell/http/routes/agent-context-references.js +85 -0
- package/dist/server-shell/http/routes/agent-context-shared.d.ts +34 -0
- package/dist/server-shell/http/routes/agent-context-shared.js +44 -0
- package/dist/server-shell/http/routes/agent-context-skills-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/agent-context-skills-routes.js +85 -0
- package/dist/server-shell/http/routes/agent-context-workspace-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/agent-context-workspace-routes.js +130 -0
- package/dist/server-shell/http/routes/agent-context.d.ts +8 -0
- package/dist/server-shell/http/routes/agent-context.js +16 -0
- package/dist/server-shell/http/routes/health.d.ts +7 -0
- package/dist/server-shell/http/routes/health.js +41 -0
- package/dist/server-shell/http/routes/local-control.d.ts +40 -0
- package/dist/server-shell/http/routes/local-control.js +260 -0
- package/dist/server-shell/http/routes/project-api/approval-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/project-api/approval-routes.js +64 -0
- package/dist/server-shell/http/routes/project-api/artifacts-routes.d.ts +8 -0
- package/dist/server-shell/http/routes/project-api/artifacts-routes.js +166 -0
- package/dist/server-shell/http/routes/project-api/clarification-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/project-api/clarification-routes.js +150 -0
- package/dist/server-shell/http/routes/project-api/constants.d.ts +3 -0
- package/dist/server-shell/http/routes/project-api/constants.js +3 -0
- package/dist/server-shell/http/routes/project-api/errors.d.ts +26 -0
- package/dist/server-shell/http/routes/project-api/errors.js +41 -0
- package/dist/server-shell/http/routes/project-api/events-stream.d.ts +11 -0
- package/dist/server-shell/http/routes/project-api/events-stream.js +55 -0
- package/dist/server-shell/http/routes/project-api/execution-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/project-api/execution-routes.js +92 -0
- package/dist/server-shell/http/routes/project-api/headers.d.ts +2 -0
- package/dist/server-shell/http/routes/project-api/headers.js +7 -0
- package/dist/server-shell/http/routes/project-api/invalidations.d.ts +10 -0
- package/dist/server-shell/http/routes/project-api/invalidations.js +57 -0
- package/dist/server-shell/http/routes/project-api/messages-routes.d.ts +8 -0
- package/dist/server-shell/http/routes/project-api/messages-routes.js +80 -0
- package/dist/server-shell/http/routes/project-api/openapi-approval-routes.d.ts +128 -0
- package/dist/server-shell/http/routes/project-api/openapi-approval-routes.js +32 -0
- package/dist/server-shell/http/routes/project-api/openapi-artifacts-routes.d.ts +51 -0
- package/dist/server-shell/http/routes/project-api/openapi-artifacts-routes.js +56 -0
- package/dist/server-shell/http/routes/project-api/openapi-collaboration-routes.d.ts +466 -0
- package/dist/server-shell/http/routes/project-api/openapi-collaboration-routes.js +165 -0
- package/dist/server-shell/http/routes/project-api/openapi-diagnostic-routes.d.ts +16 -0
- package/dist/server-shell/http/routes/project-api/openapi-diagnostic-routes.js +17 -0
- package/dist/server-shell/http/routes/project-api/openapi-execution-routes.d.ts +215 -0
- package/dist/server-shell/http/routes/project-api/openapi-execution-routes.js +75 -0
- package/dist/server-shell/http/routes/project-api/openapi-path-parameters.d.ts +9 -0
- package/dist/server-shell/http/routes/project-api/openapi-path-parameters.js +18 -0
- package/dist/server-shell/http/routes/project-api/openapi-skills-routes.d.ts +60 -0
- package/dist/server-shell/http/routes/project-api/openapi-skills-routes.js +51 -0
- package/dist/server-shell/http/routes/project-api/openapi-timeline-routes.d.ts +115 -0
- package/dist/server-shell/http/routes/project-api/openapi-timeline-routes.js +17 -0
- package/dist/server-shell/http/routes/project-api/openapi-viewer-routes.d.ts +323 -0
- package/dist/server-shell/http/routes/project-api/openapi-viewer-routes.js +120 -0
- package/dist/server-shell/http/routes/project-api/openapi-workspace-routes.d.ts +1317 -0
- package/dist/server-shell/http/routes/project-api/openapi-workspace-routes.js +95 -0
- package/dist/server-shell/http/routes/project-api/openapi.d.ts +2457 -0
- package/dist/server-shell/http/routes/project-api/openapi.js +30 -0
- package/dist/server-shell/http/routes/project-api/payload-validation.d.ts +6 -0
- package/dist/server-shell/http/routes/project-api/payload-validation.js +36 -0
- package/dist/server-shell/http/routes/project-api/project-docs-helpers.d.ts +9 -0
- package/dist/server-shell/http/routes/project-api/project-docs-helpers.js +17 -0
- package/dist/server-shell/http/routes/project-api/project-docs-routes.d.ts +8 -0
- package/dist/server-shell/http/routes/project-api/project-docs-routes.js +151 -0
- package/dist/server-shell/http/routes/project-api/project-timeline-projection.d.ts +8 -0
- package/dist/server-shell/http/routes/project-api/project-timeline-projection.js +658 -0
- package/dist/server-shell/http/routes/project-api/project-timeline-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/project-api/project-timeline-routes.js +23 -0
- package/dist/server-shell/http/routes/project-api/read-state-routes.d.ts +8 -0
- package/dist/server-shell/http/routes/project-api/read-state-routes.js +82 -0
- package/dist/server-shell/http/routes/project-api/reference-files-routes.d.ts +8 -0
- package/dist/server-shell/http/routes/project-api/reference-files-routes.js +184 -0
- package/dist/server-shell/http/routes/project-api/reference-files.d.ts +17 -0
- package/dist/server-shell/http/routes/project-api/reference-files.js +212 -0
- package/dist/server-shell/http/routes/project-api/repo-projection.d.ts +3 -0
- package/dist/server-shell/http/routes/project-api/repo-projection.js +58 -0
- package/dist/server-shell/http/routes/project-api/schemas.d.ts +1351 -0
- package/dist/server-shell/http/routes/project-api/schemas.js +441 -0
- package/dist/server-shell/http/routes/project-api/session-requirements.d.ts +10 -0
- package/dist/server-shell/http/routes/project-api/session-requirements.js +60 -0
- package/dist/server-shell/http/routes/project-api/skills-helpers.d.ts +7 -0
- package/dist/server-shell/http/routes/project-api/skills-helpers.js +48 -0
- package/dist/server-shell/http/routes/project-api/skills-routes.d.ts +8 -0
- package/dist/server-shell/http/routes/project-api/skills-routes.js +185 -0
- package/dist/server-shell/http/routes/project-api/staged-uploads.d.ts +14 -0
- package/dist/server-shell/http/routes/project-api/staged-uploads.js +149 -0
- package/dist/server-shell/http/routes/project-api/system-routes.d.ts +8 -0
- package/dist/server-shell/http/routes/project-api/system-routes.js +141 -0
- package/dist/server-shell/http/routes/project-api/types.d.ts +137 -0
- package/dist/server-shell/http/routes/project-api/types.js +2 -0
- package/dist/server-shell/http/routes/project-api/viewer-projections.d.ts +17 -0
- package/dist/server-shell/http/routes/project-api/viewer-projections.js +102 -0
- package/dist/server-shell/http/routes/project-api/viewer-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/project-api/viewer-routes.js +100 -0
- package/dist/server-shell/http/routes/project-api/workflow-routes.d.ts +4 -0
- package/dist/server-shell/http/routes/project-api/workflow-routes.js +85 -0
- package/dist/server-shell/http/routes/project-api/workspace-projections.d.ts +5 -0
- package/dist/server-shell/http/routes/project-api/workspace-projections.js +103 -0
- package/dist/server-shell/http/routes/project-api.d.ts +8 -0
- package/dist/server-shell/http/routes/project-api.js +34 -0
- package/dist/server-shell/http/sse-replay-buffer.d.ts +54 -0
- package/dist/server-shell/http/sse-replay-buffer.js +110 -0
- package/dist/server-shell/http/sse.d.ts +12 -0
- package/dist/server-shell/http/sse.js +22 -0
- package/dist/server-shell/http/static-web.d.ts +6 -0
- package/dist/server-shell/http/static-web.js +52 -0
- package/dist/server-shell/http/validation.d.ts +13 -0
- package/dist/server-shell/http/validation.js +136 -0
- package/dist/server-shell/http/workspace-events.d.ts +38 -0
- package/dist/server-shell/http/workspace-events.js +98 -0
- package/dist/server-shell/session/relay-session-context.d.ts +25 -0
- package/dist/server-shell/session/relay-session-context.js +49 -0
- package/dist/server-shell/smoke/e2e-client.d.ts +59 -0
- package/dist/server-shell/smoke/e2e-client.js +304 -0
- package/dist/server-shell/smoke/index.d.ts +2 -0
- package/dist/server-shell/smoke/index.js +2 -0
- package/dist/skills/constants.d.ts +8 -0
- package/dist/skills/constants.js +9 -0
- package/dist/skills/errors.d.ts +6 -0
- package/dist/skills/errors.js +9 -0
- package/dist/skills/index.d.ts +41 -0
- package/dist/skills/index.js +171 -0
- package/dist/skills/metadata.d.ts +8 -0
- package/dist/skills/metadata.js +80 -0
- package/dist/skills/zip-import.d.ts +18 -0
- package/dist/skills/zip-import.js +241 -0
- package/dist/store/command-recovery.d.ts +26 -0
- package/dist/store/command-recovery.js +71 -0
- package/dist/store/index.d.ts +6 -0
- package/dist/store/index.js +6 -0
- package/dist/store/lifecycle.d.ts +23 -0
- package/dist/store/lifecycle.js +53 -0
- package/dist/store/metadata.d.ts +18 -0
- package/dist/store/metadata.js +30 -0
- package/dist/store/migrations.d.ts +20 -0
- package/dist/store/migrations.js +76 -0
- package/dist/store/sqlite.d.ts +11 -0
- package/dist/store/sqlite.js +21 -0
- package/dist/workspace-ops/constants.d.ts +15 -0
- package/dist/workspace-ops/constants.js +20 -0
- package/dist/workspace-ops/errors.d.ts +8 -0
- package/dist/workspace-ops/errors.js +33 -0
- package/dist/workspace-ops/git.d.ts +13 -0
- package/dist/workspace-ops/git.js +53 -0
- package/dist/workspace-ops/index.d.ts +11 -0
- package/dist/workspace-ops/index.js +9 -0
- package/dist/workspace-ops/mainline.d.ts +2 -0
- package/dist/workspace-ops/mainline.js +16 -0
- package/dist/workspace-ops/project-doc-templates.d.ts +12 -0
- package/dist/workspace-ops/project-doc-templates.js +180 -0
- package/dist/workspace-ops/project-docs.d.ts +7 -0
- package/dist/workspace-ops/project-docs.js +156 -0
- package/dist/workspace-ops/reference-files.d.ts +3 -0
- package/dist/workspace-ops/reference-files.js +137 -0
- package/dist/workspace-ops/reference-metadata.d.ts +13 -0
- package/dist/workspace-ops/reference-metadata.js +86 -0
- package/dist/workspace-ops/reference-summaries.d.ts +17 -0
- package/dist/workspace-ops/reference-summaries.js +298 -0
- package/dist/workspace-ops/run-workspaces.d.ts +18 -0
- package/dist/workspace-ops/run-workspaces.js +271 -0
- package/dist/workspace-ops/types.d.ts +219 -0
- package/dist/workspace-ops/types.js +2 -0
- package/dist/workspace-ops/viewer-file.d.ts +4 -0
- package/dist/workspace-ops/viewer-file.js +207 -0
- package/dist/workspace-ops/viewer-git.d.ts +20 -0
- package/dist/workspace-ops/viewer-git.js +111 -0
- package/dist/workspace-ops/viewer-paths.d.ts +3 -0
- package/dist/workspace-ops/viewer-paths.js +13 -0
- package/dist/workspace-ops/viewer-tree.d.ts +9 -0
- package/dist/workspace-ops/viewer-tree.js +144 -0
- package/dist/workspace-ops/viewer.d.ts +5 -0
- package/dist/workspace-ops/viewer.js +5 -0
- package/migrations/0001_init.sql +674 -0
- package/migrations/0002_allow_sealed_round_successor_note.sql +14 -0
- package/migrations/0003_drop_scratchpad_source_message_refs.sql +1 -0
- package/migrations/0004_read_state.sql +109 -0
- package/migrations/0005_provider_usage.sql +15 -0
- package/migrations/0006_scratchpad_source_state.sql +29 -0
- package/migrations/0007_workspace_signal_read_state_scopes.sql +74 -0
- package/migrations/0008_provider_usage_anchors.sql +32 -0
- package/migrations/0009_project_timeline_events.sql +33 -0
- package/migrations/0010_project_brief.sql +13 -0
- package/migrations/0011_message_author_avatar.sql +5 -0
- package/migrations/README.md +44 -0
- package/node_modules/@tutti/relay-client/dist/host-control.d.ts +164 -0
- package/node_modules/@tutti/relay-client/dist/host-control.js +284 -0
- package/node_modules/@tutti/relay-client/dist/index.d.ts +3 -0
- package/node_modules/@tutti/relay-client/dist/index.js +3 -0
- package/node_modules/@tutti/relay-client/dist/tunnel-frames.d.ts +8 -0
- package/node_modules/@tutti/relay-client/dist/tunnel-frames.js +124 -0
- package/node_modules/@tutti/relay-client/dist/tunnel-types.d.ts +61 -0
- package/node_modules/@tutti/relay-client/dist/tunnel-types.js +2 -0
- package/node_modules/@tutti/relay-client/dist/tunnel.d.ts +4 -0
- package/node_modules/@tutti/relay-client/dist/tunnel.js +144 -0
- package/node_modules/@tutti/relay-client/package.json +18 -0
- package/node_modules/@tutti/shared/dist/domain/index.d.ts +59 -0
- package/node_modules/@tutti/shared/dist/domain/index.js +37 -0
- package/node_modules/@tutti/shared/dist/ids/index.d.ts +85 -0
- package/node_modules/@tutti/shared/dist/ids/index.js +88 -0
- package/node_modules/@tutti/shared/dist/index.d.ts +6 -0
- package/node_modules/@tutti/shared/dist/index.js +6 -0
- package/node_modules/@tutti/shared/dist/schemas/api/approvals.d.ts +307 -0
- package/node_modules/@tutti/shared/dist/schemas/api/approvals.js +110 -0
- package/node_modules/@tutti/shared/dist/schemas/api/artifacts.d.ts +173 -0
- package/node_modules/@tutti/shared/dist/schemas/api/artifacts.js +107 -0
- package/node_modules/@tutti/shared/dist/schemas/api/clarifications.d.ts +704 -0
- package/node_modules/@tutti/shared/dist/schemas/api/clarifications.js +224 -0
- package/node_modules/@tutti/shared/dist/schemas/api/index.d.ts +18 -0
- package/node_modules/@tutti/shared/dist/schemas/api/index.js +17 -0
- package/node_modules/@tutti/shared/dist/schemas/api/messages.d.ts +370 -0
- package/node_modules/@tutti/shared/dist/schemas/api/messages.js +134 -0
- package/node_modules/@tutti/shared/dist/schemas/api/openapi.d.ts +32 -0
- package/node_modules/@tutti/shared/dist/schemas/api/openapi.js +100 -0
- package/node_modules/@tutti/shared/dist/schemas/api/primitives.d.ts +109 -0
- package/node_modules/@tutti/shared/dist/schemas/api/primitives.js +174 -0
- package/node_modules/@tutti/shared/dist/schemas/api/project-timeline.d.ts +149 -0
- package/node_modules/@tutti/shared/dist/schemas/api/project-timeline.js +44 -0
- package/node_modules/@tutti/shared/dist/schemas/api/provider-config.d.ts +21 -0
- package/node_modules/@tutti/shared/dist/schemas/api/provider-config.js +33 -0
- package/node_modules/@tutti/shared/dist/schemas/api/provider-usage.d.ts +87 -0
- package/node_modules/@tutti/shared/dist/schemas/api/provider-usage.js +48 -0
- package/node_modules/@tutti/shared/dist/schemas/api/read-state.d.ts +89 -0
- package/node_modules/@tutti/shared/dist/schemas/api/read-state.js +39 -0
- package/node_modules/@tutti/shared/dist/schemas/api/runtime-events.d.ts +484 -0
- package/node_modules/@tutti/shared/dist/schemas/api/runtime-events.js +185 -0
- package/node_modules/@tutti/shared/dist/schemas/api/skills.d.ts +88 -0
- package/node_modules/@tutti/shared/dist/schemas/api/skills.js +71 -0
- package/node_modules/@tutti/shared/dist/schemas/api/types.d.ts +253 -0
- package/node_modules/@tutti/shared/dist/schemas/api/types.js +2 -0
- package/node_modules/@tutti/shared/dist/schemas/api/uploads.d.ts +103 -0
- package/node_modules/@tutti/shared/dist/schemas/api/uploads.js +78 -0
- package/node_modules/@tutti/shared/dist/schemas/api/viewer-reference.d.ts +484 -0
- package/node_modules/@tutti/shared/dist/schemas/api/viewer-reference.js +267 -0
- package/node_modules/@tutti/shared/dist/schemas/api/work-items.d.ts +264 -0
- package/node_modules/@tutti/shared/dist/schemas/api/work-items.js +196 -0
- package/node_modules/@tutti/shared/dist/schemas/api/workspace-commands.d.ts +179 -0
- package/node_modules/@tutti/shared/dist/schemas/api/workspace-commands.js +137 -0
- package/node_modules/@tutti/shared/dist/schemas/domain/index.d.ts +31 -0
- package/node_modules/@tutti/shared/dist/schemas/domain/index.js +49 -0
- package/node_modules/@tutti/shared/dist/schemas/internal/index.d.ts +46 -0
- package/node_modules/@tutti/shared/dist/schemas/internal/index.js +46 -0
- package/node_modules/@tutti/shared/dist/utils/command-idempotency/index.d.ts +40 -0
- package/node_modules/@tutti/shared/dist/utils/command-idempotency/index.js +100 -0
- package/node_modules/@tutti/shared/dist/utils/index.d.ts +5 -0
- package/node_modules/@tutti/shared/dist/utils/index.js +5 -0
- package/node_modules/@tutti/shared/dist/utils/logging/index.d.ts +34 -0
- package/node_modules/@tutti/shared/dist/utils/logging/index.js +130 -0
- package/node_modules/@tutti/shared/dist/utils/path-policy/index.d.ts +13 -0
- package/node_modules/@tutti/shared/dist/utils/path-policy/index.js +80 -0
- package/node_modules/@tutti/shared/dist/utils/redaction/index.d.ts +19 -0
- package/node_modules/@tutti/shared/dist/utils/redaction/index.js +158 -0
- package/node_modules/@tutti/shared/package.json +63 -0
- package/package.json +47 -0
- package/prompts/README.md +36 -0
- package/prompts/chat-assistant.md +43 -0
- package/prompts/codex/README.md +13 -0
- package/prompts/codex/no-write-smoke.md +35 -0
- package/prompts/procedures/README.md +38 -0
- package/prompts/procedures/context-sync.md +66 -0
- package/prompts/procedures/follow-up-check.md +83 -0
- package/prompts/procedures/project-brief-refresh.md +79 -0
- package/prompts/procedures/project-context-bootstrap.md +58 -0
- package/prompts/procedures/reference-file-summary.md +49 -0
- package/prompts/procedures/scratchpad-refresh.md +83 -0
- package/prompts/procedures/task-compile.md +116 -0
- package/prompts/prompt-flow-experiment-plan.md +203 -0
- package/prompts/prompt-flow-map.md +478 -0
- package/prompts/runs/README.md +17 -0
- package/prompts/runs/task-continuation.md +148 -0
- package/prompts/runs/task-retry.md +153 -0
- package/prompts/runs/task-run.md +135 -0
- package/prompts/skills/README.md +25 -0
- package/prompts/skills/read-main-chat/README.md +8 -0
- package/prompts/skills/read-main-chat/SKILL.md +18 -0
- package/prompts/skills/read-project-docs/README.md +13 -0
- package/prompts/skills/read-project-docs/SKILL.md +42 -0
- package/prompts/skills/read-references/README.md +9 -0
- package/prompts/skills/read-references/SKILL.md +26 -0
- package/prompts/skills/read-scratchpad/README.md +8 -0
- package/prompts/skills/read-scratchpad/SKILL.md +16 -0
- package/prompts/skills/read-user-skills/README.md +7 -0
- package/prompts/skills/read-user-skills/SKILL.md +22 -0
- package/prompts/skills/read-worklist/README.md +9 -0
- package/prompts/skills/read-worklist/SKILL.md +20 -0
- package/web/assets/Tutti-B7gEyTp1.png +0 -0
- package/web/assets/Tutti-square-BqFU7F0D.png +0 -0
- package/web/assets/index-CWkBgHap.js +29 -0
- package/web/assets/index-D8xJY8Gr.css +1 -0
- package/web/index.html +13 -0
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
# Prompt Flow Map
|
|
2
|
+
|
|
3
|
+
本文记录 Tutti 协作主流程中各模型环节的 prompt、输入、输出、下游和 skill 接入状态。
|
|
4
|
+
|
|
5
|
+
它用于后续逐项 prompt 改造讨论,不替代系统语义、API contract 或执行状态定义。正式流程语义仍以 `docs/system/`、`docs/api/` 与 `docs/modules/` 为准。
|
|
6
|
+
|
|
7
|
+
## 当前背景
|
|
8
|
+
|
|
9
|
+
模型调用当前分成三类:
|
|
10
|
+
|
|
11
|
+
- OpenAI SDK structured output:用于轻量结构化整理和判断。调用统一经过 Responses API strict JSON schema,schema 由 TypeScript 代码绑定,prompt 只能影响内容倾向,不能新增输出字段。
|
|
12
|
+
- Codex app-server read-only:用于 `@tutti` 协作聊天问答、缺失 Project Docs baseline 的初始化计划、Scratchpad 任务化、文档同步计划和 Reference summary。可以附加 built-in skills 与 invocation-scoped agent context API token。
|
|
13
|
+
- Codex app-server workspace-write:用于正式 task Run、`Run.needs_human` 后的 continuation,以及 Run pipeline 内部 bounded self-correction retry。运行在隔离 run workspace,可附加 built-in skills 和 user skills。provider transient retry 不新增 prompt 或 selection,只在 retryable app-server failure 后复用失败 attempt 的同一 prompt family。
|
|
14
|
+
|
|
15
|
+
Provider validation 也使用 OpenAI Responses API,但它只是启动前 credential/model 可用性检查,不属于协作 prompt 改造主线。
|
|
16
|
+
|
|
17
|
+
## Prompt 改造状态
|
|
18
|
+
|
|
19
|
+
已完成对齐:
|
|
20
|
+
|
|
21
|
+
- `chat_assistant`:已对齐为 Codex app-server read-only + 六个原子上下文 built-in skills;默认只用触发消息和最近小窗口,必要时才按需读取额外上下文。它可以只读查询 user skills,但不执行 user skill 指令。
|
|
22
|
+
- `scratchpad_refresh`:保持 OpenAI SDK structured output;已收敛为聊天到任务化之间的轻量观察者,可接收 ready Project Brief 作为背景锚点,并放宽 `open_questions` 为少量非阻塞建议 / 开放方向。
|
|
23
|
+
- `project_brief_refresh`:使用 OpenAI SDK structured output;从四个 canonical Project Docs 的 bounded source 派生 host-local Project Brief,不使用 Codex app-server、不写目标 repo。
|
|
24
|
+
- `project_context_bootstrap`:已对齐为 Codex app-server read-only + `read-project-docs` / `read-references` skills;只生成缺失 baseline context files 计划,写入仍归 `workspace-ops`。
|
|
25
|
+
- `task_compile`:已对齐为 Codex app-server read-only + `read-project-docs` / `read-worklist` / `read-references` skills;Scratchpad / Worklist 紧凑视图仍作为直接权威输入,Project Docs / Worklist detail / References 仅在必要时按需读取;任务化 readiness 内聚在该 workflow 中,不新增独立 gate。
|
|
26
|
+
- `context_sync`:已对齐为 Codex app-server read-only + `read-project-docs` / `read-worklist` / `read-references` skills;provider-facing direct input 为空,让 app-server 只读探索 repo,并输出 `summary` 与 `updates[].path/content`。
|
|
27
|
+
- `workspace_write_run`:已对齐为 workspace-write + 精简 task contract 输入 + Project Docs / Worklist skills + user skills;存在 user skills 时通过 `skills/list.perCwdExtraUserRoots` 预热 `<TUTTI_HOME>/skills`;Reference Files 不再通过 built-in skill 暴露,若任务或项目文档指向 `docs/reference/` 中资料,Codex 可直接读取相关 repo 文件。
|
|
28
|
+
- `follow_up_run`:已对齐为 workspace-write + 精简 task contract 输入 + continuation block + Project Docs / Worklist skills + user skills;存在 user skills 时同样预热 `<TUTTI_HOME>/skills` extra root;Reference Files 不再通过 built-in skill 暴露,若任务、项目文档或 clarification answer 指向 `docs/reference/` 中资料,Codex 可直接读取相关 repo 文件。
|
|
29
|
+
- `pipeline_self_correction`:已对齐为 workspace-write + 精简 task contract 输入 + 精简 correction block;使用 `runs/task-retry.md` 和 `workspace_write_run` selection,在同一 active Run 记录终态前处理 no candidate diff、checks 失败、checks 修改候选或 deterministic promotion reconcile 失败等可自纠 feedback。
|
|
30
|
+
- `follow_up_check`:保持 OpenAI SDK structured output;已收敛为只判断上游 `Run.needs_human` 的 task-bound answer,不接入 skill,不重查代码或协作上下文;provider-facing input 只保留精简 task contract、previous Run pause reason、原 clarification request 和 answers,provider raw output 使用 `{ result: ... }` 互斥分支,failed-task retry 从 active path 移除。
|
|
31
|
+
- `reference_summary_refresh`:已对齐为 Codex app-server read-only + 单文件临时 `cwd`;workflow / activity refs、原始 path、blob、media type 和 file metadata 只留在 Control Plane 内部,不进入 prompt;provider raw output 使用 `{ result: ... }` 互斥分支,只输出 `summarized.summary` 或 `unavailable.reason`。
|
|
32
|
+
|
|
33
|
+
本次改造记录:
|
|
34
|
+
|
|
35
|
+
- 2026-06-10:`workspace_write_run`、follow-up workspace-write Run 与阶段性 `context_sync` 的 skill 接入、prompt 目标和文档同步分层已完成。
|
|
36
|
+
- 2026-06-11:`follow_up_check` 命名、上下文精简和 failed-task retry 收紧已完成;follow-up workspace-write selection 已命名为 `follow_up_run`。
|
|
37
|
+
- 2026-06-11:初次 `task-run` 改造已完成;prompt 输入精简,`changed_paths` 与 docs 状态改由 Run pipeline Git diff 派生,`workspace_write_run` selection 移除 `read-references`。
|
|
38
|
+
- 2026-06-11:`task-continuation` 改造已完成;prompt 复用 initial task-run 的精简 task contract,只新增 `continuation` block 传入 previous Run pause reason、已解决 clarification rounds、人类回答原文和 `follow_up_check.resume` summary;`follow_up_run` selection 移除 `read-references`。
|
|
39
|
+
- 2026-06-14:live prompt-flow smoke 后调整 app-server runtime 边界:raw stdout / stderr known-value hard-fail 改为显式 strict leak-check 诊断选项,默认只做 surfaced diagnostics redaction;read-only Procedure turn timeout 放宽到 10 分钟,workspace-write Run turn timeout 放宽到 15 分钟。
|
|
40
|
+
- 2026-06-24:移除旧的独立文档检查与旧 LLM review;Run prompt 负责随实现同步相关文档,Run pipeline 负责 checks、bounded self-correction retry、result commit 和机械 promotion,阶段性文档维护交给独立 `context_sync` Procedure。
|
|
41
|
+
- 2026-06-24:`task-retry` 从旧预留 hook 改为 Run pipeline self-correction retry 模板。retry 不经过 Control Plane failed-task follow-up,不复活 `Task.failed`,只在当前 active Run 写最终结果前接收 bounded pipeline feedback 并重新生成候选。
|
|
42
|
+
- 2026-06-24:`task_compile` prompt 增加通用任务化 readiness 准则:只有能冻结没有重大隐藏假设的正式 task contract 时才写入 Worklist;高影响且无法从现有上下文可靠推断的缺失决策走既有 workflow-bound clarification,不新增 workflow / gate / schema。
|
|
43
|
+
- 2026-06-15:OpenAI SDK structured-output runner 对缺失或空 `output_text` 做一次通用重试;异步 `Procedure.failed` 会写入主群聊 `system_notice`,避免测试 harness 或用户只观察空 projection 时误以为仍在等待。
|
|
44
|
+
- 2026-06-25:Run pipeline 对 retryable Codex app-server workspace-write failure 增加一次 provider transient retry。该 retry 只清理旧 attempt workspace 并重跑同一 prompt family,不进入 `task-retry.md`,不附加新的 correction block,也不打开 clarification。
|
|
45
|
+
- 2026-06-28:`scratchpad_refresh` provider raw output 改为 `{ result: ... }` nested branch schema,`ready` 只输出 `scratchpad_snapshot`,`needs_human` 只输出 `request_payload`,adapter 解包后保持下游 workflow union 不变。
|
|
46
|
+
- 2026-06-28:`task_compile` provider-facing input 改为压缩后的 Scratchpad / Worklist / optional clarification request + answer messages,不再注入 `context_entry_json`、workflow refs、审计字段、排序字段、时间戳或完整 message projection;provider raw output 改为 `{ result: ... }` 互斥分支,分支由 `proposal` 或 `clarification_request_payload` 字段存在性表达,不再输出 `decision`。proposal task 只输出 `module_ref / title / goal / scope`,runner adapter 再映射为 Control Plane 内部 proposal。
|
|
47
|
+
- 2026-06-28:`context_sync` provider-facing input 去掉 `context_entry_json`、workflow/activity refs、触发原因和诊断型字段;输出去掉 `decision`、`doc_key`、`reason`、`evidence_paths`、`checked_paths`、`skipped_paths` 和 `open_questions`,只保留 `summary` 与 `updates[].path/content`,Control Plane 通过 `updates.length` 判断是否写入。
|
|
48
|
+
- 2026-06-29:`task-run` / `task-continuation` / `task-retry` provider-facing input 统一只保留 `title / goal / scope` 加必要的 `continuation` 或 `correction` block,不再注入 `context_entry_json`、task id、task summary 或 Run lineage;`task-retry` correction block 只保留 summary、reason code、guidance 和可选 promotion failure 摘要;provider raw output 改为 `{ result: ... }` 互斥分支,只输出 `completed.summary`、`completed_no_repo_changes.summary`、`needs_human.{title,summary,request}` 或 `failed.summary`。
|
|
49
|
+
- 2026-06-29:`follow_up_check` provider-facing input 去掉 `context_entry_json`、task id/status、activity ref、result kind、Run lineage、message id、作者 identity 和时间戳,只保留 `title / goal / scope`、`previous_run.summary`、`previous_run.clarification_request_payload` 与 `answers[]`;provider raw output 改为 `{ result: ... }` 互斥分支,只输出 `resume.summary`、`needs_more_input.{title,summary,request}` 或 `requires_retasking.summary`。
|
|
50
|
+
- 2026-06-29:`reference_summary_refresh` provider-facing input 清零;runner 复制目标 reference 文件到独立临时目录,并以该目录作为 app-server `cwd` 和唯一 readable path。prompt 不再接收 workflow/activity trace anchors、原始路径、file metadata、blob 或 media type;provider raw output 改为 `{ result: ... }` 互斥分支,只输出 `summarized.summary` 或自然语言 `unavailable.reason`。
|
|
51
|
+
- 2026-07-02:新增 `project_brief_refresh`;在四个 canonical Project Docs 创建、同步、被成功 Run promotion 修改,或 provider 配置完成后需要 backfill 时尽力刷新 host-local Project Brief projection。provider-facing input 只包含四份 Project Docs 的 bounded source / status,输出 `product_summary / tech_summary / structure_summary / principles_summary`。
|
|
52
|
+
|
|
53
|
+
后续逐项讨论时,默认从尚未在本节标为已完成的环节继续推进,避免重复分析已经收口的 prompt。
|
|
54
|
+
|
|
55
|
+
## Skill Selection
|
|
56
|
+
|
|
57
|
+
Phase 9.1 起,Codex app-server turn 可以在主 prompt text 前接收 skill input item。Built-in skills 位于 `apps/server/prompts/skills/<skill_name>/SKILL.md`。
|
|
58
|
+
|
|
59
|
+
当前 built-in skills:
|
|
60
|
+
|
|
61
|
+
- `read-main-chat`:读取 bounded 主群聊上下文。
|
|
62
|
+
- `read-project-docs`:列出并读取 Tutti 项目上下文文件:四个 canonical project docs。
|
|
63
|
+
- `read-scratchpad`:读取当前 Scratchpad projection。
|
|
64
|
+
- `read-worklist`:读取 Worklist 列表和 task detail。
|
|
65
|
+
- `read-references`:列出 Reference Files、返回已有 summary metadata,并读取相关 text reference 正文。
|
|
66
|
+
- `read-user-skills`:列出 user skills,并读取 bounded `SKILL.md` 文本。
|
|
67
|
+
|
|
68
|
+
当前 server-side selection:
|
|
69
|
+
|
|
70
|
+
| Selection | 使用环节 | Built-in skills | User skills | Context API scopes |
|
|
71
|
+
| --- | --- | --- | --- | --- |
|
|
72
|
+
| `chat_assistant` | `@tutti` 只读问答 | `read-main-chat`, `read-project-docs`, `read-scratchpad`, `read-worklist`, `read-references`, `read-user-skills` | disabled | messages, project-docs, scratchpad, worklist, task, references, skills |
|
|
73
|
+
| `project_context_bootstrap` | 缺失 baseline context files 创建计划 | `read-project-docs`, `read-references` | disabled | project-docs, references |
|
|
74
|
+
| `task_compile` | Scratchpad -> Worklist 任务化 | `read-project-docs`, `read-worklist`, `read-references` | disabled | project-docs, worklist, task, references |
|
|
75
|
+
| `context_sync` | 文档同步计划 | `read-project-docs`, `read-worklist`, `read-references` | disabled | project-docs, worklist, task, references |
|
|
76
|
+
| `reference_summary_refresh` | Reference file summary 生成 | none | disabled | none |
|
|
77
|
+
| `workspace_write_run` | 初次 Task Run / pipeline self-correction retry / 同类 provider transient retry | `read-project-docs`, `read-worklist` | all enabled | project-docs, worklist, task |
|
|
78
|
+
| `follow_up_run` | continuation after task-bound clarification / continuation provider transient retry | `read-project-docs`, `read-worklist` | all enabled | project-docs, worklist, task |
|
|
79
|
+
|
|
80
|
+
注意:
|
|
81
|
+
|
|
82
|
+
- selection 是 provider 内部静态选择表,不是用户可见配置。
|
|
83
|
+
- 未被 selection 选中的 skill 不会暴露给该 app-server turn。
|
|
84
|
+
- scope 只来自 server-side selection,不来自 skill 自报。
|
|
85
|
+
- skill 只提供原子上下文读取说明;workflow 角色、输出 schema、状态解释和治理仍属于 prompt template 与 Control Plane。
|
|
86
|
+
|
|
87
|
+
## Agent Context API
|
|
88
|
+
|
|
89
|
+
Codex app-server 可以通过 host-local internal API 按需读取协作上下文:
|
|
90
|
+
|
|
91
|
+
```txt
|
|
92
|
+
/internal/agent-context/messages
|
|
93
|
+
/internal/agent-context/project-docs
|
|
94
|
+
/internal/agent-context/project-docs/file
|
|
95
|
+
/internal/agent-context/scratchpad
|
|
96
|
+
/internal/agent-context/worklist
|
|
97
|
+
/internal/agent-context/tasks/:taskId
|
|
98
|
+
/internal/agent-context/references
|
|
99
|
+
/internal/agent-context/references/file
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
边界:
|
|
103
|
+
|
|
104
|
+
- 只读,不提供写协作 truth、repo truth、machine-local secret 或 command 的 API。
|
|
105
|
+
- 使用每次 invocation 生成的短期 scoped bearer token,默认 TTL 30 分钟。
|
|
106
|
+
- 不进入 browser-facing OpenAPI,不作为 Relay / browser API。
|
|
107
|
+
- response 必须 bounded、paginated、redacted。
|
|
108
|
+
- project-docs 文件读取在文档缺失、不可读或含 `To be confirmed.` 占位时返回结构化状态提示,不把缺失文档当成 context API runtime failure。
|
|
109
|
+
- token、host-local context API URL 和 skill absolute path 都属于 provider known sensitive values,用于 diagnostics redaction;raw output known-value hard-fail 只在显式 strict leak-check 诊断模式下启用,默认关闭。
|
|
110
|
+
|
|
111
|
+
## 协作主流程
|
|
112
|
+
|
|
113
|
+
用户可见主循环可以简化理解为:
|
|
114
|
+
|
|
115
|
+
```txt
|
|
116
|
+
launch / join
|
|
117
|
+
-> 群聊讨论
|
|
118
|
+
-> 可选 @tutti 只读问答
|
|
119
|
+
-> Scratchpad 自动刷新
|
|
120
|
+
-> Submit to Worklist
|
|
121
|
+
-> 必要时准备项目上下文
|
|
122
|
+
-> Project Brief 尽力刷新
|
|
123
|
+
-> task_compile 生成 Worklist
|
|
124
|
+
-> scheduler dispatch
|
|
125
|
+
-> Codex 执行单个 Task
|
|
126
|
+
-> checks
|
|
127
|
+
-> 可自纠 pipeline feedback 时在当前 Run 内部 retry
|
|
128
|
+
-> promotion
|
|
129
|
+
-> 如果 canonical Project Docs 被 promotion 修改,Project Brief 非阻塞尽力刷新
|
|
130
|
+
-> Worklist terminal feedback
|
|
131
|
+
-> 当前 Worklist 全部 done 后阶段性 context_sync
|
|
132
|
+
-> Project Brief 尽力刷新
|
|
133
|
+
-> 回写状态 / 文档 / 下一轮讨论
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 环节总表
|
|
137
|
+
|
|
138
|
+
| 环节 | Prompt 文件 | 调用方式 | Skill selection | 输出下游 |
|
|
139
|
+
| --- | --- | --- | --- | --- |
|
|
140
|
+
| `@tutti` 只读问答 | `chat-assistant.md` | Codex app-server read-only | `chat_assistant` | 普通 `main_chat` 或 `clarification_round` `agent_text` 消息 |
|
|
141
|
+
| Scratchpad 自动刷新 | `procedures/scratchpad-refresh.md` | OpenAI SDK structured output | 无 | Scratchpad projection |
|
|
142
|
+
| 缺失 baseline context files 创建 | `procedures/project-context-bootstrap.md` | Codex app-server read-only plan + `workspace-ops` write;不可用时本地 deterministic fallback | `project_context_bootstrap` | 缺失 baseline context files / `task_compile` |
|
|
143
|
+
| Project Brief 刷新 | `procedures/project-brief-refresh.md` | OpenAI SDK structured output | 无 | host-local Project Brief projection |
|
|
144
|
+
| Scratchpad -> Worklist 任务化 | `procedures/task-compile.md` | Codex app-server read-only | `task_compile` | Worklist proposal 或 clarification |
|
|
145
|
+
| 文档同步计划 `context_sync` | `procedures/context-sync.md` | Codex app-server read-only | `context_sync` | `workspace-ops` 受控写 docs |
|
|
146
|
+
| Reference summary 刷新 | `procedures/reference-file-summary.md` | Codex app-server read-only | `reference_summary_refresh` | `workspace-ops` 受控写 summary 索引 |
|
|
147
|
+
| 初次 Task Run | `runs/task-run.md` | Codex app-server workspace-write | `workspace_write_run` | Run pipeline |
|
|
148
|
+
| clarification 后继续 | `runs/task-continuation.md` | Codex app-server workspace-write | `follow_up_run` | Run pipeline |
|
|
149
|
+
| pipeline self-correction retry | `runs/task-retry.md` | Codex app-server workspace-write | `workspace_write_run` | Run pipeline |
|
|
150
|
+
| task-bound 回复判断 | `procedures/follow-up-check.md` | OpenAI SDK structured output | 无 | continuation / next round / retasking closure |
|
|
151
|
+
| Codex app-server smoke | `codex/no-write-smoke.md` | Codex app-server read-only smoke | 无 | release / readiness gate |
|
|
152
|
+
|
|
153
|
+
## 环节详情
|
|
154
|
+
|
|
155
|
+
### `@tutti` 只读问答
|
|
156
|
+
|
|
157
|
+
定义:主群聊或当前 writable clarification round 中用户明确 mention `@tutti` 时触发的只读问答助手,不进入 Procedure / Run。
|
|
158
|
+
|
|
159
|
+
功能:快速回答项目相关问题;必要时只读查看更多聊天、Scratchpad、Worklist、Reference 或 repo facts;不能创建任务、修改文件或声称完成执行。
|
|
160
|
+
|
|
161
|
+
当前输入:
|
|
162
|
+
|
|
163
|
+
- `assistant_context_json.project.display_name`:当前项目展示名。
|
|
164
|
+
- `assistant_context_json.trigger`:触发本次 `@tutti` 的消息,只包含 `text` 和可选 `author_display_name`。
|
|
165
|
+
- `assistant_context_json.mode = "main_chat"` 时,`recent_messages[]` 是最近 3 条主群聊消息,只包含 `text` 和可选 `author_display_name`;数组顺序表达最近上下文,不再传入 message id、时间戳、author ref、message kind 或 role。
|
|
166
|
+
- `assistant_context_json.mode = "clarification_round"` 时,`round_request` 是当前 round 的 title / summary / request,`round_messages[]` 是 bounded round 内消息,包含 `role / kind / text / optional author_display_name`;`recent_main_chat_before_round[]` 是 round 卡片打开前的小段主群聊上下文,用于解析短指代。
|
|
167
|
+
- 可通过 `read-main-chat`、`read-project-docs`、`read-scratchpad`、`read-worklist`、`read-references`、`read-user-skills` skills 按需读取更多上下文,包括 user skill 列表和 bounded `SKILL.md`。
|
|
168
|
+
|
|
169
|
+
输出:`{ answer: string }`。
|
|
170
|
+
|
|
171
|
+
下游:主群聊触发时写入普通 `main_chat agent_text`;clarification round 触发时写入同一 round 的普通 `clarification_round agent_text`。SSE 使用 `message.created` 与对应 query invalidation;不会被 Control Plane 解释。后续自动 `scratchpad_refresh` 可能把主群聊 agent message 作为普通聊天上下文读取;round 内 agent message 不默认作为 Scratchpad source,但提交后的 workflow-bound round 会把它作为 `task_compile` answer context。
|
|
172
|
+
|
|
173
|
+
当前改造结论:
|
|
174
|
+
|
|
175
|
+
- 默认快速简洁回答。
|
|
176
|
+
- 不再直接注入 Scratchpad、Worklist、Project Docs / `repo_context` 大对象,也不再注入 context source 清单、safety JSON、message ids、时间戳或作者 ref。
|
|
177
|
+
- 仅在必要时使用 `chat_assistant` selection 暴露的六个 built-in skills;其中 `read-user-skills` 只用于查询 user skill metadata / `SKILL.md`,不执行 user skill 指令。
|
|
178
|
+
|
|
179
|
+
### 自动刷新 Scratchpad
|
|
180
|
+
|
|
181
|
+
定义:主群聊或已提交的 `task_compile` clarification round 出现新的 Scratchpad source 后,系统自动触发 `scratchpad_refresh`,把近期讨论整理成轻量观察者笔记和下一次任务化可用的唯一 Scratchpad 快照。
|
|
182
|
+
|
|
183
|
+
功能:用简洁语言记录当前在讨论什么或准备做什么,重写当前快照,提炼稳定共识、少量值得留意的开放方向,以及短小 task-impacting changes;不创建正式任务。
|
|
184
|
+
|
|
185
|
+
当前输入:
|
|
186
|
+
|
|
187
|
+
- `workflow_input_json.previous`:压缩后的旧 Scratchpad,只包含 topic / background / consensus / questions / changes。
|
|
188
|
+
- `workflow_input_json.project_brief`:可选 ready Project Brief,只包含四个 canonical Project Docs 派生的短 `product / tech / structure / principles` 摘要;它只是项目背景锚点,missing / stale 时不传,不替代最新聊天。
|
|
189
|
+
- `workflow_input_json.recent_messages`:压缩后的最近主群聊上下文,只包含 role / optional author_display_name / text / optional ref;它向前补足到 5 条小窗口,用于理解当前话题和短指代,首轮没有 cursor 时承接初始主群聊 source。
|
|
190
|
+
- `workflow_input_json.new_messages`:压缩后的 cursor 后增量来源消息,只包含 role / optional author_display_name / text / optional ref;已提交的 `task_compile` clarification round source 也进入这里。
|
|
191
|
+
|
|
192
|
+
`workflow_ref` 和 safety 边界仍由运行时用于追踪、审计和执行约束,但不进入 `scratchpad_refresh` prompt;该模板已经固定 workflow identity,模型只需要业务输入。
|
|
193
|
+
|
|
194
|
+
Provider raw 输出:根对象只包含 `result`;`result` 内二选一输出 `ready + scratchpad_snapshot` 或 `needs_human + request_payload`,不会同时输出 `scratchpad_snapshot` 和 `request_payload`。
|
|
195
|
+
|
|
196
|
+
下游输出:OpenAI adapter 解包 `result` 后交给 Control Plane;`ready` 写入 Scratchpad snapshot,`needs_human` 以 Tutti 身份向主群聊发温和提醒。
|
|
197
|
+
|
|
198
|
+
下游:Control Plane 写入 Scratchpad projection;后续 `task_compile` 读取。
|
|
199
|
+
|
|
200
|
+
当前改造结论:
|
|
201
|
+
|
|
202
|
+
- `open_questions` 可以承接群聊中真实未解决的问题,也可以承接少量非阻塞建议或开放方向;表述应模糊、柔和,避免被理解为强制 clarification。
|
|
203
|
+
- `task_changes` 是 Submit 前的一两句短摘要,只承接具体、可任务化的后续增量意图;明显相关时可以点出前端、后端 / API、数据、文档、测试或资产等受影响面。未决需求、可行性假设、技术未知和缺失决策应进入 `open_questions`,不进入 `task_changes`。
|
|
204
|
+
- Scratchpad 是摘要,不是完整聊天记录;但它必须保留下一次任务化、实现或验收必需的用户提供细节。需要剔除的是 secret、provider 细节、raw log 和 Tutti runtime / internal path。
|
|
205
|
+
- `needs_human` 只作为 Tutti 在主群聊中的 kindly reminder,用于提示会明显阻塞后续推进的关键可行性、需求、安全或技术问题;它不是正式 clarification gate。
|
|
206
|
+
- Reference upload message 只证明上传事件和文件名 / path 存在;普通 Scratchpad / taskization 不因缺少 reference 正文而阻塞,也不能根据文件名猜测文件正文。Reference summary 只由独立 `reference_summary_refresh` read-only Procedure 生成。
|
|
207
|
+
- source cursor、dirty / in-flight / backoff 等调度状态只保存在后端,不进入 provider prompt。
|
|
208
|
+
|
|
209
|
+
### 缺失 baseline context files 创建
|
|
210
|
+
|
|
211
|
+
定义:Submit to Worklist 的 project context gate 发现目标项目缺少 baseline context files 时触发的内部 `project_context_bootstrap` Procedure。baseline context files 仅包含四个 canonical project docs:`product.md`、`tech.md`、`structure.md` 与 `architecture-principles.md`。
|
|
212
|
+
|
|
213
|
+
功能:优先用 Codex app-server read-only 生成缺失 Project Docs 的完整文件内容计划;然后由 `workspace-ops` 校验固定路径、只写缺失文件并 commit;如果 app-server 计划不可用或失败,则回退到本地 deterministic 模板创建缺失文档。
|
|
214
|
+
|
|
215
|
+
当前输入:
|
|
216
|
+
|
|
217
|
+
- `workflow_input_json.project_name`:目标项目展示名。
|
|
218
|
+
- `workflow_input_json.missing_docs`:Control Plane 已确认缺失且需要本轮生成的 baseline context file 清单;仅在非空时传入。
|
|
219
|
+
- `workflow_input_json.scratchpad`:当前 Scratchpad snapshot,仅在 Scratchpad ready 时提供。
|
|
220
|
+
- 可通过 `read-project-docs` skill 检查现有 Project Docs 状态或读取已存在文档正文;缺失、不可读或含 `To be confirmed.` 占位时应按返回状态处理。
|
|
221
|
+
- 可通过 `read-references` skill 按需读取相关 reference 正文。
|
|
222
|
+
- 可使用 Codex app-server 的只读仓库探索能力理解实际代码结构、框架、命令和已实现行为。
|
|
223
|
+
|
|
224
|
+
模型输出:`documents[]`;每项只包含 `doc_key` 和完整 `content`。固定目标路径由 Control Plane 根据 `doc_key` 后处理生成。
|
|
225
|
+
|
|
226
|
+
下游:Control Plane 根据 `doc_key` 生成固定 baseline path,`workspace-ops.initializeProjectDocs` 只写缺失的固定 baseline paths;完成后自动继续 `task_compile`。本环节不再有用户手动项目分析入口,也不会写主群聊分析报告。
|
|
227
|
+
|
|
228
|
+
Submit gate 在缺失 baseline context files 且主群聊存在尚未进入 Scratchpad 的消息时,会先运行一次 `scratchpad_refresh`;刷新完成后再启动 `project_context_bootstrap`,因此 bootstrap 输入应尽量读取最新 Scratchpad,而不直接读取群聊或 Worklist。
|
|
229
|
+
|
|
230
|
+
当前改造结论:
|
|
231
|
+
|
|
232
|
+
- 已从旧的项目分析 / repo context 预组装形态收敛为 app-server read-only 生成缺失文档计划。
|
|
233
|
+
- provider-facing 输入只保留项目名、非空 `missing_docs` 和可选刷新后的 Scratchpad;workflow/activity refs、安全元数据和完整 Project Docs summary 不进入 prompt。
|
|
234
|
+
- 通过 `project_context_bootstrap` selection 只暴露 `read-project-docs` / `read-references`;不暴露 main chat、Worklist、user skills,也不允许模型直接写 repo。
|
|
235
|
+
- 缺失、不可读或含 `To be confirmed.` 占位的 Project Docs 由 context API 返回结构化状态,模型应将其作为上下文状态而不是 runtime failure。
|
|
236
|
+
|
|
237
|
+
### Project Brief 刷新
|
|
238
|
+
|
|
239
|
+
定义:四个 canonical Project Docs 创建、同步、被成功 Run promotion 修改,或 provider 配置后需要 backfill 时触发的 host-local 派生摘要刷新。它不是独立 Procedure、不是 Worklist 任务,也不写目标项目仓库。
|
|
240
|
+
|
|
241
|
+
功能:从 `product.md`、`tech.md`、`structure.md` 与 `architecture-principles.md` 的 bounded source / status 生成短 Project Brief,供后续轻量 planning flow 使用。后续 Scratchpad 可以读取 brief 获取项目锚点,而不需要把四份完整文档直接塞进 prompt。
|
|
242
|
+
|
|
243
|
+
当前输入:
|
|
244
|
+
|
|
245
|
+
- `workflow_input_json.docs[]`:四个 canonical Project Docs 的 `doc_key / path / status`,以及可选 `size_bytes / blob_oid / unreadable_reason / content / content_truncated`。
|
|
246
|
+
- `content` 来自 committed mainline 的 viewer 读取结果,并按固定字节上限截断。
|
|
247
|
+
- `missing`、`unreadable` 与 `content_truncated` 是上下文状态,模型只能总结可见事实,不能补写或推断缺失正文。
|
|
248
|
+
|
|
249
|
+
输出:固定字段 `product_summary / tech_summary / structure_summary / principles_summary`。每个字段是一句短摘要,只承接对应 Project Doc 中可见且稳定的事实。
|
|
250
|
+
|
|
251
|
+
下游:Control Plane 把输出写入 SQLite `project_brief` projection,并保存 source fingerprint 与可空 workflow / activity anchor。读取方可用当前 source fingerprint 判断 `ready` 或 `stale`;stale 时仍以 canonical Project Docs 为准。
|
|
252
|
+
|
|
253
|
+
当前改造结论:
|
|
254
|
+
|
|
255
|
+
- 固定使用 OpenAI SDK structured output,不使用 Codex app-server、skills、repo 写入或 workspace-write。
|
|
256
|
+
- Project Docs 初始化、`project_context_bootstrap` 写入缺失 docs、`context_sync` 更新 canonical docs、Run promotion 修改 canonical docs,以及 provider 配置完成后的 backfill 都会尽力刷新;Run promotion 触发的刷新不阻塞 task 终态。provider 不可用、source 不可用、brief 已经 fresh 或刷新失败不阻断上游写入与后续任务执行。
|
|
257
|
+
- prompt 不接收 workflow refs、activity refs、安全元数据、repo context、聊天、Scratchpad、Worklist、Reference Files、host path 或完整 docs 之外的额外事实。
|
|
258
|
+
- `project_brief` 不是第五份 baseline context file,不替代 canonical Project Docs,不保存完整文档正文、prompt、provider raw response 或 credential。
|
|
259
|
+
|
|
260
|
+
### Scratchpad -> Worklist 任务化
|
|
261
|
+
|
|
262
|
+
定义:把 Scratchpad 编译为 append-only Worklist proposal。
|
|
263
|
+
|
|
264
|
+
功能:生成模块和正式任务;必要时打开 workflow-bound clarification;不修改既有任务。
|
|
265
|
+
|
|
266
|
+
当前输入:
|
|
267
|
+
|
|
268
|
+
- `workflow_input_json.scratchpad`:当前 Scratchpad 的紧凑业务字段,仅包含 `topic / background_summary / current_consensus / open_questions / task_changes`。
|
|
269
|
+
- `workflow_input_json.worklist.modules[]`:当前正式 Worklist 的紧凑模块视图,仅包含模块 `id / name / optional summary / archived` 与任务 `title / summary / status`;模块名和任务标题作为短指代解析的历史锚点。
|
|
270
|
+
- `workflow_input_json.clarification`:可选 workflow-bound clarification continuation 上下文,包含上一轮 `request` 和已提交 answer messages;answer message 只包含 `role / optional author_display_name / text`。
|
|
271
|
+
- 可通过 `read-project-docs` / `read-worklist` / `read-references` skills 按需读取当前项目上下文文件正文、既有任务 contract / latest result 或相关 reference 正文,用于理解产品目标、技术栈、结构、agent 工作规则、阶段性任务背景或用户提供的参考资料。
|
|
272
|
+
- 不通过 skill 重读 Scratchpad;Worklist 紧凑视图以直接输入为准,task detail 只在需要理解既有任务细节时读取。
|
|
273
|
+
|
|
274
|
+
不进入 prompt 的字段:`context_entry_json`、workflow ref、activity ref、Scratchpad `id/state/updated_*`、Worklist module/task order、时间戳、latest run result、created-from workflow ref、clarification message id / refs / created_at 等审计或调度字段。
|
|
275
|
+
|
|
276
|
+
Provider raw 输出:根对象只包含 `result`;`result` 内二选一输出 `proposal` 或 `clarification_request_payload`,不输出 `decision`。proposal 只包含新模块和新任务;新模块字段为 `temp_key`、`name`,任务使用 `module_ref: { kind: "new" | "existing", key }` 指向本次新模块或现有 Worklist module。任务字段只包含 `title / goal / scope`;`goal` 是一句话任务目标,`scope` 同时承接实施范围、关键约束 / 非目标 / 假设和可观察验收信号。
|
|
277
|
+
|
|
278
|
+
下游输出:workflow runner 解包 `result`,把 `proposal` 分支推断为内部 `decision: "ready"`,把 `clarification_request_payload` 分支推断为内部 `decision: "needs_human"`;同时把 `module_ref` 映射成 Control Plane 内部 proposal 的 `module_temp_key` 或 `existing_module_key`,并把 provider `goal` 填入内部 task `summary` 与 `contract.goal`。Control Plane 下游仍消费内部 `TaskCompileWorkflowOutput` union。
|
|
279
|
+
|
|
280
|
+
下游:Control Plane 应用 proposal 创建 module/task/detail;或打开 / 继续 workflow-bound clarification。
|
|
281
|
+
|
|
282
|
+
当前改造结论:
|
|
283
|
+
|
|
284
|
+
- `task_compile` selection 开放 `read-project-docs` / `read-worklist` / `read-references`,但 prompt 不预设读取顺序或人工拼装上下文;只说明在必要时可以读取。
|
|
285
|
+
- 任务化 readiness 内聚在 `task_compile`:能冻结没有重大隐藏假设的正式 task contract 才生成 proposal;无法从现有上下文可靠推断的高影响缺失决策走现有 workflow-bound clarification,不新增 workflow / gate / schema。
|
|
286
|
+
- task `scope` 是 Run 后续执行会收到的关键边界,应保留实施和验收必需的用户提供细节,而不是要求 Run 从聊天或 Scratchpad 重新推断。
|
|
287
|
+
- Project Docs 缺失通常不会进入本环节,因为 Submit gate 会先通过 `project_context_bootstrap` 与 `workspace-ops.initializeProjectDocs` 补齐缺失 baseline paths。gate 检查的是固定路径存在性,不保证内容质量。
|
|
288
|
+
- Project Docs unreadable / unavailable 应是少见状态,通常来自编码或二进制异常、path policy、repo snapshot / viewer、IO 或 scope 配置问题。模型应在 Scratchpad / Worklist 与其他允许证据足够时继续任务化;只有无法定义目标、范围、约束或验收时才请求 workflow-bound clarification。
|
|
289
|
+
- Project Docs 中的 `To be confirmed.` 等占位是开放上下文,不是阻塞项,也不能当作已确认事实。
|
|
290
|
+
- Reference upload message 只证明上传事件、文件名或路径存在;不证明正文内容。若 reference 正文会影响 task contract,应通过 `read-references` 读取;否则只作为事件处理。
|
|
291
|
+
- 后续可考虑单独增加 reference context expansion workflow;当前不实现,只保留为可能扩展方向。
|
|
292
|
+
|
|
293
|
+
### 文档同步计划 `context_sync`
|
|
294
|
+
|
|
295
|
+
定义:根据目标项目当前实现现状和现有 docs 生成受控文档更新计划。
|
|
296
|
+
|
|
297
|
+
功能:判断项目文档是否需要同步;只返回完整文件内容 update plan,不直接写 repo。
|
|
298
|
+
|
|
299
|
+
当前输入:
|
|
300
|
+
|
|
301
|
+
- 可通过 Codex app-server read-only repo inspection 主动探索项目实现现状。
|
|
302
|
+
- 可通过 `read-project-docs` skill 检查 Project Docs 当前可读状态和读取已有项目上下文文件正文。
|
|
303
|
+
- 可通过 `read-worklist` skill 读取 Worklist / task detail;只用于理解阶段性完成背景、相关任务范围和稳定结果线索。
|
|
304
|
+
- 可通过 `read-references` skill 按需读取 reference 目录中的相关正文。
|
|
305
|
+
|
|
306
|
+
输出:`summary` 和 `updates[]`;每个 update 只包含 repo-relative `path` 和完整 `content`。空 `updates` 表示无需同步。冲突或证据不足不触发 `needs_human`,而是保留相关文档不变,并在 `summary` 中写简短诊断。
|
|
307
|
+
|
|
308
|
+
下游:Control Plane 解释输出;`workspace-ops` 校验 path policy、写 docs 并创建 commit。
|
|
309
|
+
|
|
310
|
+
当前改造结论:
|
|
311
|
+
|
|
312
|
+
- 已去掉 `snapshot`、`docs`、`repo_context`、`sync_reason`、`focus`、Scratchpad、聊天和完整 Worklist 大对象输入。
|
|
313
|
+
- 已去掉 `context_entry_json`、workflow / activity refs、触发原因和 safety metadata provider-facing input;这些只用于运行时追踪、审计、调度和 adapter 边界。
|
|
314
|
+
- 模型可按需读取 Worklist 理解阶段性完成背景,但只能把稳定结果沉淀到可维护文档里。
|
|
315
|
+
- 已去掉 `needs_human` / `request_payload` 输出分支,以及 `decision`、`doc_key`、`reason`、`evidence_paths`、`checked_paths`、`skipped_paths` 和 `open_questions` 输出字段;本环节固定完整执行。
|
|
316
|
+
- prompt 只说明通用文档同步目标、目标项目文档落点、canonical docs 职责、保留现有标题和章节设计,并要求输出完整目标文件内容。
|
|
317
|
+
- Worklist / task result 不是长期文档的任务完成流水来源。
|
|
318
|
+
|
|
319
|
+
### Reference summary 刷新
|
|
320
|
+
|
|
321
|
+
定义:为单个已上传 Reference File 生成或重试简短 summary。
|
|
322
|
+
|
|
323
|
+
功能:读取一个 reference 文件正文或可理解内容,返回简短 orientation summary;无法访问、解码、理解或安全总结时返回 unavailable reason。不写 repo、不创建任务、不更新 Project Docs。
|
|
324
|
+
|
|
325
|
+
当前输入:
|
|
326
|
+
|
|
327
|
+
- Provider-facing prompt 不接收 direct input。
|
|
328
|
+
- Control Plane 内部仍保留 workflow / activity refs、原始 repo-relative path、file name、category、size、blob oid 和 optional media type,用于目标选择、审计、错误处理和写回 summary index。
|
|
329
|
+
- runner 在调用 app-server 前校验目标 path 仍位于 workspace root 内,将目标文件复制到独立临时目录,并以该目录作为 app-server `cwd`。
|
|
330
|
+
- app-server readable paths 只包含该临时目录加 Codex minimal read scope;不附加 built-in skills、user skills、agent context API scopes、network 或 web search。
|
|
331
|
+
|
|
332
|
+
Provider raw 输出:根对象只包含 `result`;`result` 内二选一输出 `summarized.summary` 或 `unavailable.reason`。`reason` 是简短自然语言,不要求固定枚举。
|
|
333
|
+
|
|
334
|
+
下游输出:workflow runner 解包 `result`,把 `summarized` 分支映射为内部 `decision: "summarized"`,把 `unavailable` 分支映射为内部 `decision: "unavailable"`;同时把原始 repo-relative path 填回内部 `read_paths`,供 `workspace-ops` 写入 `docs/reference/README.md` summary record。
|
|
335
|
+
|
|
336
|
+
下游:Control Plane 调用 `workspace-ops.updateReferenceSummaries` 更新 `docs/reference/README.md` 的 `## Summaries` 派生索引,并通过 SSE invalidation 刷新 Reference Files projection。
|
|
337
|
+
|
|
338
|
+
当前改造结论:
|
|
339
|
+
|
|
340
|
+
- 原始 path、blob、media type、workflow refs 和 activity refs 不进入 prompt,避免上下文浪费和路径泄露。
|
|
341
|
+
- summary 模型只看到临时目录中的一个复制文件,不会顺手探索目标项目目录或做项目理解。
|
|
342
|
+
- prompt 只说明任务、只读/no-network 边界、secret-like content 处理和输出 schema 示例。
|
|
343
|
+
- 输出不再包含 `decision`、`summary`、`unavailable_reason`、`read_paths` 等内部字段;这些由 runner adapter 从 `{ result: ... }` 映射回来。
|
|
344
|
+
|
|
345
|
+
### 初次 Task Run
|
|
346
|
+
|
|
347
|
+
定义:围绕单个正式 task,在隔离 run workspace 中实现候选改动。
|
|
348
|
+
|
|
349
|
+
功能:读取任务契约和必要 repo facts,修改 run workspace,返回结构化 task-run result。
|
|
350
|
+
|
|
351
|
+
当前输入:
|
|
352
|
+
|
|
353
|
+
- `run_input_json.title`:短任务标题,用于快速定位任务意图。
|
|
354
|
+
- `run_input_json.goal`:正式任务目标。
|
|
355
|
+
- `run_input_json.scope`:正式任务边界,同时承接关键约束、非目标、假设和可观察验收信号。
|
|
356
|
+
- 不传入 `context_entry_json`、task id、task summary、workflow / activity refs、Run lineage、dispatch context 或 run workspace 绝对路径。
|
|
357
|
+
- 通过 `workspace_write_run` selection 可读取 Project Docs 与 Worklist,并可加载所有 enabled user skills;存在 user skills 时,app-server `skills/list` 会先收到 `<TUTTI_HOME>/skills` extra user root。
|
|
358
|
+
- Reference Files 不通过 built-in skill 暴露;若任务契约或 Project Docs 指向 `docs/reference/` 中资料,Codex 可直接读取相关 repo 文件正文。
|
|
359
|
+
- 不直接读取主群聊或 Scratchpad;这些不作为 hidden scope。
|
|
360
|
+
|
|
361
|
+
输出:根对象只包含 `result`;`result` 内四选一输出 `completed.summary`、`completed_no_repo_changes.summary`、`needs_human.{title,summary,request}` 或 `failed.summary`。`completed_no_repo_changes` 只用于任务契约不要求 repository file changes 的情况。`needs_human` payload 必须能直接作为 task-bound clarification request 使用:解释为什么 frozen contract 下无法安全继续,并提出一个具体、可回答、非 secret 的问题。
|
|
362
|
+
|
|
363
|
+
下游:Run pipeline 收集真实 Git diff 作为 `changed_paths`;`needs_human` 时 Control Plane 记录 `Run.needs_human`、打开 task-bound clarification 并把 task 迁回 `pending`;有 repo candidate 的 `completed` 结果从 Git changed paths 派生 docs 状态,再执行 checks、result commit 和 mechanical promotion;空 diff 的 `completed_no_repo_changes` 结果跳过 checks / commit / promotion,记录 `promotion.status = not_attempted`。
|
|
364
|
+
|
|
365
|
+
provider transient retry:如果本环节的 Codex app-server workspace-write turn 在产生可用结构化输出前因 retryable provider failure 失败,Run pipeline 可清理 attempt workspace 并使用 `runs/task-run.md`、同一 `workspace_write_run` selection 和同一 frozen task contract 重跑一次。该 retry 不使用 `task-retry.md`。
|
|
366
|
+
|
|
367
|
+
当前改造结论:
|
|
368
|
+
|
|
369
|
+
- frozen task contract 是唯一正式执行范围;Worklist 上下文只用于理解顺序、相邻任务、prior result 和避免冲突。
|
|
370
|
+
- Project Docs / Worklist / repo 内相关 reference 文件 / user skills 可辅助实现和文档判断,但不能覆盖 Tutti 的任务契约、command policy、workspace path policy、checks、promotion 或 redaction 规则。
|
|
371
|
+
- task-run 不再自报 `docs` 或 `changed_paths`;Run result 的路径证据始终来自 Run pipeline 在 candidate workspace 中收集的 Git diff。
|
|
372
|
+
- `blocked` 不再属于 initial task-run 输出;无法产出可用 candidate、repo/tooling 错误或普通无 coherent diff 时返回 `failed`。
|
|
373
|
+
- 如果本次改动影响稳定项目事实、使用方式、公开行为、接口、setup、项目组织、维护上下文或项目工作规则,应在同一 run workspace 更新相关项目文档。
|
|
374
|
+
- 文档更新应写稳定结论和当前事实;不得把 Run 过程记录、任务完成日志、临时推理、调试轨迹或过长实现叙事写进 project specs / README-style 文档。
|
|
375
|
+
|
|
376
|
+
### Clarification 后继续
|
|
377
|
+
|
|
378
|
+
定义:task-bound clarification 已提交且 `follow_up_check` 判断可继续时,对同一 task contract 继续执行。
|
|
379
|
+
|
|
380
|
+
功能:使用 human clarification 作为同一契约下的补充上下文,继续产生候选改动。
|
|
381
|
+
|
|
382
|
+
当前输入:
|
|
383
|
+
|
|
384
|
+
- `run_input_json.title` / `goal` / `scope`:同初次 Task Run,是 frozen task contract 的完整 provider-facing 表达。
|
|
385
|
+
- `run_input_json.continuation.previous_run`:上一 Run 的 needs-human summary 与原 clarification request payload,说明为什么暂停。
|
|
386
|
+
- `run_input_json.continuation.clarification.resolved_rounds[]`:截至当前 round 的已提交 task-bound clarification rounds;每轮包含 request payload 和人类回答消息原文。
|
|
387
|
+
- `run_input_json.continuation.follow_up_check`:`resume` 判断的简短 summary,用于说明为什么本次可继续,但不能替代人类回答原文。
|
|
388
|
+
- 不传入 `context_entry_json`、task id、task summary、workflow / activity refs、Run lineage、dispatch context 或 run workspace 绝对路径。
|
|
389
|
+
- 通过 `follow_up_run` selection 可读取 Project Docs 与 Worklist,并可加载所有 enabled user skills;存在 user skills 时,app-server `skills/list` 会先收到 `<TUTTI_HOME>/skills` extra user root。
|
|
390
|
+
- Reference Files 不通过 built-in skill 暴露;若任务契约、Project Docs 或 clarification answer 指向 `docs/reference/` 中资料,Codex 可直接读取相关 repo 文件正文。
|
|
391
|
+
- 不直接读取主群聊或 Scratchpad;这些不作为 hidden scope。
|
|
392
|
+
|
|
393
|
+
输出:同初次 Task Run 的 `{ result: ... }` 互斥分支 schema。continuation 不再自报 `docs` 或 `changed_paths`。
|
|
394
|
+
|
|
395
|
+
下游:同初次 Task Run。Run pipeline 收集真实 Git diff;有 repo candidate 的 `completed` 后从 Git changed paths 派生 docs 状态并执行 checks;空 diff 的 `completed_no_repo_changes` 跳过 checks / commit / promotion;`needs_human` 时 Control Plane 继续打开 task-bound clarification。
|
|
396
|
+
|
|
397
|
+
provider transient retry:continuation 的 retryable app-server failure 只重跑同一个 `runs/task-continuation.md` 和 `follow_up_run` selection,不转换为 pipeline self-correction retry,也不改变 frozen task contract。
|
|
398
|
+
|
|
399
|
+
当前改造结论:
|
|
400
|
+
|
|
401
|
+
- 复用初次 Task Run 的 task contract、Project Docs / Worklist skills、user skills、输出 schema 和下游 pipeline。
|
|
402
|
+
- 仅新增必要的 `continuation` block,用来承接 previous Run pause reason、已提交 clarification rounds、人类回答原文和 follow-up check summary。
|
|
403
|
+
- Human clarification 只能澄清或确认 frozen contract 内的执行,不得扩展为新任务;如果回答改变 goal / scope,应该由上游 `follow_up_check` 走 `requires_retasking`,而不是进入 continuation。
|
|
404
|
+
- `follow_up_check.summary` 只帮助定位 resume 判断,不能替代 human answer messages。
|
|
405
|
+
- Reference Files 仍作为 repo 文件可读,不再通过 `read-references` skill 或 references context API scope 暴露给 continuation Run。
|
|
406
|
+
|
|
407
|
+
### Pipeline self-correction retry
|
|
408
|
+
|
|
409
|
+
定义:Run pipeline 在同一 active Run 写最终结果前,对可自纠 pipeline feedback 做的一次 bounded retry。
|
|
410
|
+
|
|
411
|
+
当前状态:active pipeline-internal path。它不等于 task-bound follow-up retry;`Run.failed` / `Task.failed` 当前仍不通过 follow-up retry 复活。如果最终失败后仍需要继续,应由用户在主群聊补充上下文或调整方向,随后重新走 Scratchpad -> Worklist 创建新任务。
|
|
412
|
+
|
|
413
|
+
触发条件:首批只覆盖无候选 diff、checks 失败、checks 修改 tracked candidate files,以及 deterministic promotion reconcile 返回未 promotion 的可自纠失败。
|
|
414
|
+
|
|
415
|
+
当前输入:
|
|
416
|
+
|
|
417
|
+
- `run_input_json.title` / `goal` / `scope`:同一 frozen task contract。
|
|
418
|
+
- `run_input_json.correction.summary`:上一 attempt 的 bounded failure summary。
|
|
419
|
+
- `run_input_json.correction.reason_code`:Run pipeline 生成的 feedback 短码,来源包括 no candidate diff、checks 失败、checks 修改候选或 promotion reconcile 失败。
|
|
420
|
+
- `run_input_json.correction.guidance`:Run pipeline 根据 feedback reason 生成的本次 retry 直接修正目标。
|
|
421
|
+
- `run_input_json.correction.promotion_failure?`:仅 promotion / promotion-reconcile 未能 promotion 时出现,包含机器生成 reason code 和短摘要。
|
|
422
|
+
- 不传入 `context_entry_json`、task id、task summary、workflow / activity refs、Run lineage、dispatch context 或 run workspace 绝对路径。
|
|
423
|
+
- 通过 `workspace_write_run` selection 可读取 Project Docs 与 Worklist,并可加载所有 enabled user skills;存在 user skills 时,app-server `skills/list` 会先收到 `<TUTTI_HOME>/skills` extra user root。
|
|
424
|
+
|
|
425
|
+
输出:同初次 Task Run 的 `{ result: ... }` 互斥分支 schema。retry 不自报 `docs` 或 `changed_paths`。
|
|
426
|
+
|
|
427
|
+
下游:Run pipeline 清理上一 attempt workspace 后重新创建 fresh run workspace、收集真实 Git diff;有 repo candidate 时执行 checks、创建 result commit 并 promotion,空 diff 的 `completed_no_repo_changes` 可记录为无 repo 改动完成。若 retry 仍产生可自纠 feedback 且已到上限,Run pipeline 记录最终失败;若 retry 返回 `needs_human`,才进入正常 task-bound clarification path。
|
|
428
|
+
|
|
429
|
+
provider transient retry:如果 self-correction attempt 自身遇到 retryable app-server failure,Run pipeline 仍重跑同一个 `runs/task-retry.md` 和 correction block,不创建第二个 correction context。
|
|
430
|
+
|
|
431
|
+
### Task-bound 回复判断
|
|
432
|
+
|
|
433
|
+
定义:判断用户对 task-bound clarification 的回复是否足以继续同一 task contract。
|
|
434
|
+
|
|
435
|
+
功能:决定 `resume`、继续 `needs_more_input`,或认为 `requires_retasking`。
|
|
436
|
+
|
|
437
|
+
当前输入:
|
|
438
|
+
|
|
439
|
+
- `workflow_input_json.title` / `goal` / `scope`:展平后的 frozen task contract。
|
|
440
|
+
- `workflow_input_json.previous_run.summary`:latest `Run.needs_human` 暂停原因。
|
|
441
|
+
- `workflow_input_json.previous_run.clarification_request_payload`:上一 Run 发出的原 task-bound clarification request,包含 `title`、`summary`、`request`。
|
|
442
|
+
- `workflow_input_json.answers[]`:本轮提交的人类回答正文,按消息顺序排列。
|
|
443
|
+
|
|
444
|
+
Provider raw 输出:根对象只包含 `result`;`result` 内三选一输出 `resume.summary`、`needs_more_input.{title,summary,request}` 或 `requires_retasking.summary`。runner adapter 解包后交给 Control Plane 内部 outcome。
|
|
445
|
+
|
|
446
|
+
下游:Control Plane 物化 continuation、下一轮 task-bound clarification,或关闭当前 task 执行链并将 task 标记为 failed。
|
|
447
|
+
|
|
448
|
+
当前改造结论:
|
|
449
|
+
|
|
450
|
+
- 不接入 skill,不调用 Codex app-server,不读取代码、Project Docs、Scratchpad、Worklist 或 Reference Files。
|
|
451
|
+
- 本环节被触发时,上游必须已经提供充分上下文;如果 latest Run result 不是 `needs_human`,Control Plane 不调用模型,直接关闭该 follow-up path。
|
|
452
|
+
- workflow refs、task id/status、activity ref、result kind、Run lineage、message id、作者 identity 和时间戳只用于运行时追踪、审计、恢复或后续 continuation,不进入 provider prompt。
|
|
453
|
+
- `requires_retasking` 不 patch 当前 task,也不创建隐式新 task;用户需要回到主群聊讨论,再通过 Scratchpad -> Worklist 形成新的正式任务。
|
|
454
|
+
|
|
455
|
+
### Codex App-server Smoke
|
|
456
|
+
|
|
457
|
+
定义:显式 live smoke,用于验证仓库锁定的 Codex app-server 能以 read-only 模式运行。
|
|
458
|
+
|
|
459
|
+
功能:验证 API-key auth、account/model list、read-only thread/turn、no-write git status、无 approval request、secret redaction。
|
|
460
|
+
|
|
461
|
+
当前输入:临时 repo、README sentinel、provider config。
|
|
462
|
+
|
|
463
|
+
输出:smoke pass/failure diagnostic。
|
|
464
|
+
|
|
465
|
+
下游:release / readiness gate,不属于用户协作主流程。
|
|
466
|
+
|
|
467
|
+
当前实现:`apps/server/src/providers/openai/app-server/smoke.ts` 通过 prompt renderer 加载 `codex.no_write_smoke`,向模板注入 README sentinel,并绑定 `{ sentinel: string }` 输出 schema。
|
|
468
|
+
|
|
469
|
+
## 单项优化前检查
|
|
470
|
+
|
|
471
|
+
每次优化某个 prompt 前,先确认:
|
|
472
|
+
|
|
473
|
+
- 原 prompt 的定义、功能、输入和输出。
|
|
474
|
+
- 调用方式是 OpenAI SDK structured output、Codex app-server read-only,还是 Codex app-server workspace-write。
|
|
475
|
+
- 是否可以接入 skill;如果可以,selection 是否只暴露该环节需要的 skills。
|
|
476
|
+
- 输出是否必须匹配固定 schema;如果是,prompt 不能要求 schema 之外的字段。
|
|
477
|
+
- 下游由哪个环节承接,以及下游如何解释 `ready`、`needs_human`、`blocked`、`failed`、`allow`、`deny` 等 decision。
|
|
478
|
+
- 是否存在 secret、路径、reference 文件正文、repo 写入、run workspace 或 baseline 文档生成边界。
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# runs
|
|
2
|
+
|
|
3
|
+
These templates are used by task `Run` execution.
|
|
4
|
+
|
|
5
|
+
- `task-run.md` is rendered for initial task Runs.
|
|
6
|
+
- `task-continuation.md` is rendered for Phase 8 continuation Runs after task-bound clarification.
|
|
7
|
+
- `task-retry.md` is rendered for bounded Run pipeline self-correction retries after pipeline feedback such as no candidate diff, failed checks, checks mutating the candidate, or deterministic promotion reconcile failure. It is not a failed-task follow-up path and does not resurrect `Task.failed`.
|
|
8
|
+
Templates in this directory may describe task contracts, repo evidence, check expectations, artifact declaration rules, and documentation update responsibilities. They must never include provider credentials or host-local secret material.
|
|
9
|
+
|
|
10
|
+
`task-run.md` allows `needs_human` only for human requirement decisions, non-secret context, or risk confirmation. Unusable candidates, ordinary missing diffs, or repo/tooling errors that prevent implementation should be returned as `failed` so the Run does not open task-bound clarification incorrectly. If the task contract does not require repository file changes, the output can use `completed_no_repo_changes`; otherwise a completed implementation is expected to produce a candidate diff. If the candidate is complete but Codex self-validation commands are unavailable or blocked, the task-run output should still be `completed`; Tutti checks are the authoritative validation gate.
|
|
11
|
+
Initial `task-run.md`, active `task-continuation.md`, and active pipeline `task-retry.md` receive only the compact task contract fields `title / goal / scope`; continuation adds the required `continuation` block, and pipeline self-correction retry adds the required `correction` block with only the previous failure summary, machine-generated reason code, correction guidance, and optional promotion failure summary. Provider-facing prompts do not receive task ids, task summaries, Run lineage, workflow anchors, changed paths, docs status, checks status, or the safety audit context entry.
|
|
12
|
+
All three Run templates use a slim mutually exclusive structured output schema under `result`: exactly one of `completed.summary`, `completed_no_repo_changes.summary`, `needs_human.{title,summary,request}`, or `failed.summary`. The `summary` is a concise, human-readable result note for project members who may not inspect the code. It should describe what changed, what was found, or why the Run cannot continue; checks, docs, promotion, changed paths, and other Tutti status stay in structured fields derived by the Run pipeline. They do not ask Codex to self-report docs status or changed paths; both come from Run pipeline Git diff and derived projection.
|
|
13
|
+
Initial `task-run.md`, active `task-continuation.md`, and active pipeline `task-retry.md` also instruct Codex to write or update the single active `tutti.artifact.json` manifest only when the task creates or updates a member-viewable visual artifact. The manifest must include a viewer-facing `artifact.title` and must set `artifact.network: true` when the preview loads remote browser resources. The manifest remains repo truth and is not reported through the structured output schema.
|
|
14
|
+
Active task-bound follow-up still only starts continuation Runs from `Run.needs_human`. Pipeline self-correction retry happens before a terminal Run result is recorded and does not open clarification.
|
|
15
|
+
Provider transient retry is separate from self-correction. If a retryable Codex app-server workspace-write failure occurs before usable structured output, Run pipeline may rerun the same prompt family once in a fresh run workspace: initial Runs stay on `task-run.md`, continuation Runs stay on `task-continuation.md`, and self-correction attempts stay on `task-retry.md`. This retry does not add `RunCorrectionContext` unless the failed attempt was already a self-correction attempt.
|
|
16
|
+
Run templates are responsible for telling Codex to update related project documentation in the same candidate workspace whenever implementation changes stable project facts. Broader cleanup, fact reconciliation, and phase-level documentation maintenance belong to the independent `context_sync` Procedure.
|
|
17
|
+
The Phase 8 promotion reconcile foundation currently uses deterministic workspace-ops apply and reruns checks on the reconciled merge candidate. A dedicated Codex `promotion-reconcile.md` prompt is reserved for a later fallback when deterministic apply cannot resolve the moved-mainline candidate.
|