@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,158 @@
|
|
|
1
|
+
export const REDACTION_LABELS = {
|
|
2
|
+
providerApiKey: "[REDACTED:provider_api_key]",
|
|
3
|
+
bearerToken: "[REDACTED:bearer_token]",
|
|
4
|
+
cookie: "[REDACTED:cookie]",
|
|
5
|
+
joinToken: "[REDACTED:join_token]",
|
|
6
|
+
hostSecret: "[REDACTED:host_secret]",
|
|
7
|
+
localPath: "[REDACTED:local_path]",
|
|
8
|
+
};
|
|
9
|
+
export const REDACTION_FIXTURES = [
|
|
10
|
+
"sk-proj-example-secret",
|
|
11
|
+
"Authorization: Bearer example-token",
|
|
12
|
+
"Cookie: tutti_session=example-session",
|
|
13
|
+
"http://127.0.0.1:4370/join/example-join-token",
|
|
14
|
+
"http://127.0.0.1:4370/api/v1/join/example-join-token/accept",
|
|
15
|
+
"host_connection_token=example-host-token",
|
|
16
|
+
"host_registration_secret=example-host-secret",
|
|
17
|
+
"/Users/example/.tutti/auth.json",
|
|
18
|
+
"/Users/example/project/.git/config",
|
|
19
|
+
"/Users/example/.tutti/projects/proj_123/runs/act_123",
|
|
20
|
+
"OPENAI_API_KEY=example",
|
|
21
|
+
];
|
|
22
|
+
const TEXT_REDACTION_RULES = [
|
|
23
|
+
{
|
|
24
|
+
pattern: /\bOPENAI_API_KEY\s*=\s*[^\s"'`]+/giu,
|
|
25
|
+
replacement: `OPENAI_API_KEY=${REDACTION_LABELS.providerApiKey}`,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
pattern: /\bAuthorization:\s*Bearer\s+[^\s,;"'`]+/giu,
|
|
29
|
+
replacement: `Authorization: Bearer ${REDACTION_LABELS.bearerToken}`,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
pattern: /\bBearer\s+[A-Za-z0-9._~+/-]+=*/gu,
|
|
33
|
+
replacement: `Bearer ${REDACTION_LABELS.bearerToken}`,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
pattern: /\bCookie:\s*[^\n\r]+/giu,
|
|
37
|
+
replacement: `Cookie: ${REDACTION_LABELS.cookie}`,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
pattern: /\btutti_session\s*=\s*[^;\s,]+/giu,
|
|
41
|
+
replacement: `tutti_session=${REDACTION_LABELS.cookie}`,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
pattern: /https?:\/\/[^\s"'`]+\/api\/v1\/join\/[A-Za-z0-9._~+/-]+\/accept/giu,
|
|
45
|
+
replacement: `https://[REDACTED:host]/api/v1/join/${REDACTION_LABELS.joinToken}/accept`,
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
pattern: /https?:\/\/[^\s"'`]+\/join\/[A-Za-z0-9._~+/-]+/giu,
|
|
49
|
+
replacement: `https://[REDACTED:host]/join/${REDACTION_LABELS.joinToken}`,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
pattern: /(^|[\s"'`])\/api\/v1\/join\/[A-Za-z0-9._~+/-]+\/accept/giu,
|
|
53
|
+
replacement: `$1/api/v1/join/${REDACTION_LABELS.joinToken}/accept`,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
pattern: /(^|[\s"'`])\/join\/[A-Za-z0-9._~+/-]+/giu,
|
|
57
|
+
replacement: `$1/join/${REDACTION_LABELS.joinToken}`,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
pattern: /\bhost_connection_token\s*=\s*[^\s"'`&]+/giu,
|
|
61
|
+
replacement: `host_connection_token=${REDACTION_LABELS.hostSecret}`,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
pattern: /\bhost_registration_secret\s*=\s*[^\s"'`&]+/giu,
|
|
65
|
+
replacement: `host_registration_secret=${REDACTION_LABELS.hostSecret}`,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
pattern: /\bsk-(?:proj-)?[A-Za-z0-9_-]{8,}\b/gu,
|
|
69
|
+
replacement: REDACTION_LABELS.providerApiKey,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
pattern: /(^|[\s"'=:(])((?:\/Users\/|\/home\/|\/private\/var\/folders\/|\/var\/folders\/)[^\s"',)]+)/gu,
|
|
73
|
+
replacement: `$1${REDACTION_LABELS.localPath}`,
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
function replacementForSensitiveKey(key) {
|
|
77
|
+
const normalized = key.toLowerCase();
|
|
78
|
+
if (normalized.endsWith("_ref") || normalized.endsWith("_id")) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
if (normalized === "authorization" || normalized.includes("bearer")) {
|
|
82
|
+
return REDACTION_LABELS.bearerToken;
|
|
83
|
+
}
|
|
84
|
+
if (normalized === "openai_api_key" || normalized.endsWith("api_key")) {
|
|
85
|
+
return REDACTION_LABELS.providerApiKey;
|
|
86
|
+
}
|
|
87
|
+
if (normalized === "cookie" || normalized.includes("session_cookie")) {
|
|
88
|
+
return REDACTION_LABELS.cookie;
|
|
89
|
+
}
|
|
90
|
+
if (normalized.includes("join_token")) {
|
|
91
|
+
return REDACTION_LABELS.joinToken;
|
|
92
|
+
}
|
|
93
|
+
if (normalized.includes("host_connection_token") ||
|
|
94
|
+
normalized.includes("host_registration_secret") ||
|
|
95
|
+
normalized.includes("host_secret")) {
|
|
96
|
+
return REDACTION_LABELS.hostSecret;
|
|
97
|
+
}
|
|
98
|
+
if (normalized.endsWith("_token") || normalized === "token") {
|
|
99
|
+
return REDACTION_LABELS.bearerToken;
|
|
100
|
+
}
|
|
101
|
+
if (normalized.includes("secret")) {
|
|
102
|
+
return REDACTION_LABELS.hostSecret;
|
|
103
|
+
}
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
function isRecord(value) {
|
|
107
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
108
|
+
}
|
|
109
|
+
export function redactText(value) {
|
|
110
|
+
let redacted = value;
|
|
111
|
+
for (const rule of TEXT_REDACTION_RULES) {
|
|
112
|
+
redacted = redacted.replace(rule.pattern, rule.replacement);
|
|
113
|
+
}
|
|
114
|
+
return redacted;
|
|
115
|
+
}
|
|
116
|
+
export function redactValue(value) {
|
|
117
|
+
if (typeof value === "string") {
|
|
118
|
+
return redactText(value);
|
|
119
|
+
}
|
|
120
|
+
if (Array.isArray(value)) {
|
|
121
|
+
return value.map((item) => redactValue(item));
|
|
122
|
+
}
|
|
123
|
+
if (isRecord(value)) {
|
|
124
|
+
const redacted = {};
|
|
125
|
+
for (const [key, nested] of Object.entries(value)) {
|
|
126
|
+
redacted[key] = replacementForSensitiveKey(key) ?? redactValue(nested);
|
|
127
|
+
}
|
|
128
|
+
return redacted;
|
|
129
|
+
}
|
|
130
|
+
return value;
|
|
131
|
+
}
|
|
132
|
+
export function redactError(error) {
|
|
133
|
+
if (error instanceof Error) {
|
|
134
|
+
const redacted = {
|
|
135
|
+
name: error.name,
|
|
136
|
+
message: redactText(error.message),
|
|
137
|
+
};
|
|
138
|
+
if (error.stack !== undefined) {
|
|
139
|
+
redacted.stack = redactText(error.stack);
|
|
140
|
+
}
|
|
141
|
+
return redacted;
|
|
142
|
+
}
|
|
143
|
+
return redactValue(error);
|
|
144
|
+
}
|
|
145
|
+
export function redactAndTruncateText(value, maxLength) {
|
|
146
|
+
if (!Number.isInteger(maxLength) || maxLength < 0) {
|
|
147
|
+
throw new RangeError("maxLength must be a non-negative integer");
|
|
148
|
+
}
|
|
149
|
+
const redacted = redactText(value);
|
|
150
|
+
if (redacted.length <= maxLength) {
|
|
151
|
+
return redacted;
|
|
152
|
+
}
|
|
153
|
+
if (maxLength <= 3) {
|
|
154
|
+
return ".".repeat(maxLength);
|
|
155
|
+
}
|
|
156
|
+
return `${redacted.slice(0, maxLength - 3)}...`;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tutti/shared",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"development": "./dist/index.js",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./domain": {
|
|
14
|
+
"types": "./dist/domain/index.d.ts",
|
|
15
|
+
"development": "./dist/domain/index.js",
|
|
16
|
+
"import": "./dist/domain/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./ids": {
|
|
19
|
+
"types": "./dist/ids/index.d.ts",
|
|
20
|
+
"development": "./dist/ids/index.js",
|
|
21
|
+
"import": "./dist/ids/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./schemas/api": {
|
|
24
|
+
"types": "./dist/schemas/api/index.d.ts",
|
|
25
|
+
"development": "./dist/schemas/api/index.js",
|
|
26
|
+
"import": "./dist/schemas/api/index.js"
|
|
27
|
+
},
|
|
28
|
+
"./schemas/domain": {
|
|
29
|
+
"types": "./dist/schemas/domain/index.d.ts",
|
|
30
|
+
"development": "./dist/schemas/domain/index.js",
|
|
31
|
+
"import": "./dist/schemas/domain/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./schemas/internal": {
|
|
34
|
+
"types": "./dist/schemas/internal/index.d.ts",
|
|
35
|
+
"development": "./dist/schemas/internal/index.js",
|
|
36
|
+
"import": "./dist/schemas/internal/index.js"
|
|
37
|
+
},
|
|
38
|
+
"./utils": {
|
|
39
|
+
"types": "./dist/utils/index.d.ts",
|
|
40
|
+
"development": "./dist/utils/index.js",
|
|
41
|
+
"import": "./dist/utils/index.js"
|
|
42
|
+
},
|
|
43
|
+
"./utils/command-idempotency": {
|
|
44
|
+
"types": "./dist/utils/command-idempotency/index.d.ts",
|
|
45
|
+
"development": "./dist/utils/command-idempotency/index.js",
|
|
46
|
+
"import": "./dist/utils/command-idempotency/index.js"
|
|
47
|
+
},
|
|
48
|
+
"./utils/path-policy": {
|
|
49
|
+
"types": "./dist/utils/path-policy/index.d.ts",
|
|
50
|
+
"development": "./dist/utils/path-policy/index.js",
|
|
51
|
+
"import": "./dist/utils/path-policy/index.js"
|
|
52
|
+
},
|
|
53
|
+
"./utils/redaction": {
|
|
54
|
+
"types": "./dist/utils/redaction/index.d.ts",
|
|
55
|
+
"development": "./dist/utils/redaction/index.js",
|
|
56
|
+
"import": "./dist/utils/redaction/index.js"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"dependencies": {
|
|
60
|
+
"@sinclair/typebox": "^0.34.49",
|
|
61
|
+
"ulid": "^3.0.2"
|
|
62
|
+
}
|
|
63
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xfey/tutti",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"tutti": "dist/server-shell/cli/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"migrations",
|
|
19
|
+
"prompts",
|
|
20
|
+
"web",
|
|
21
|
+
"README.md"
|
|
22
|
+
],
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=24 <26",
|
|
25
|
+
"npm": ">=11 <12"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@fastify/cors": "^11.2.0",
|
|
29
|
+
"@fastify/static": "^9.1.3",
|
|
30
|
+
"@fastify/websocket": "^11.2.0",
|
|
31
|
+
"@openai/codex": "^0.125.0",
|
|
32
|
+
"@sinclair/typebox": "^0.34.49",
|
|
33
|
+
"@tutti/relay-client": "0.0.0",
|
|
34
|
+
"@tutti/shared": "0.0.0",
|
|
35
|
+
"better-sqlite3": "^12.9.0",
|
|
36
|
+
"fastify": "^5.8.5",
|
|
37
|
+
"openai": "^6.34.0",
|
|
38
|
+
"sharp": "^0.35.3",
|
|
39
|
+
"ulid": "^3.0.2",
|
|
40
|
+
"ws": "^8.20.0",
|
|
41
|
+
"yauzl": "^3.3.2"
|
|
42
|
+
},
|
|
43
|
+
"bundledDependencies": [
|
|
44
|
+
"@tutti/shared",
|
|
45
|
+
"@tutti/relay-client"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# prompts
|
|
2
|
+
|
|
3
|
+
## 作用
|
|
4
|
+
|
|
5
|
+
这里保存 Tutti server 使用的大模型 prompt、指令模板和 Codex 执行模板。
|
|
6
|
+
|
|
7
|
+
所有稳定的模型-facing 指令都应以独立文件保存在本目录或其子目录中。
|
|
8
|
+
TypeScript 代码不应内联长 prompt 或完整系统指令。
|
|
9
|
+
|
|
10
|
+
完整规范见 [../../../docs/system/prompt-template-management.md](../../../docs/system/prompt-template-management.md)。
|
|
11
|
+
协作流程到 prompt 模板的导航见 [prompt-flow-map.md](./prompt-flow-map.md)。
|
|
12
|
+
Prompt / skill 改造后的 live 实验计划与记录见 [prompt-flow-experiment-plan.md](./prompt-flow-experiment-plan.md)。
|
|
13
|
+
|
|
14
|
+
## 结构
|
|
15
|
+
|
|
16
|
+
- `procedures/`:`scratchpad_refresh`、`project_brief_refresh`、`task_compile`、`project_context_bootstrap`、`context_sync`、`reference_summary_refresh`、`follow_up_check` 等 Procedure / workflow prompt。
|
|
17
|
+
- `runs/`:正式 task `Run`、task-bound continuation 与 pipeline self-correction retry 等 Run pipeline prompt;provider transient retry 不新增 prompt,而是复用失败 attempt 的同一 prompt family;Codex 参与式 promotion reconcile prompt 后续按 fallback 需求加入。
|
|
18
|
+
- `codex/`:Codex app-server smoke 等 adapter / spike prompt。
|
|
19
|
+
- `skills/`:Tutti packaged built-in Codex skills;由 server-side app-server skill selection 选择,不在 Web Skills 页面展示,也不保存 user skills。
|
|
20
|
+
- `chat-assistant.md`:主群聊与 clarification round 内 `@tutti` 只读项目问答 prompt;它不是 Procedure / Run prompt。
|
|
21
|
+
- `prompt-flow-map.md`:workflow / Run / prompt template 导航。
|
|
22
|
+
- `prompt-flow-experiment-plan.md`:prompt / skill live 实验记录。
|
|
23
|
+
|
|
24
|
+
新建子目录时必须同步放置 `README.md`,说明该目录下 prompt 的职责、输入变量和禁止内容。
|
|
25
|
+
|
|
26
|
+
## 约定
|
|
27
|
+
|
|
28
|
+
- prompt 文件默认使用 `.md`。
|
|
29
|
+
- 每个文件只服务一个稳定用途。
|
|
30
|
+
- 模板变量由 server 内部 renderer 显式传入。
|
|
31
|
+
- 文件开头的 HTML metadata 注释块只用于维护索引;renderer 会在变量替换前剥离,不进入模型上下文。
|
|
32
|
+
- renderer 会先 redaction 变量内容再做最终 secret-like 检查;repo evidence 中的 `{{ ... }}` 模板语法属于普通文件内容,不作为 Tutti prompt 占位符处理。
|
|
33
|
+
- 输出结构化 schema 不写在 prompt 文件里;schema 仍由 TypeBox / JSON Schema 管理。
|
|
34
|
+
- prompt 文件不得保存 provider secret、credential ref、host 绝对路径、run workspace path、join token、cookie 或 provider raw event。
|
|
35
|
+
- built-in skill 文件不得保存 context API token、host-local URL、provider secret、host 绝对路径或 user skill 内容。
|
|
36
|
+
- workflow 语义和 prompt 选择归 `control-plane/workflows`;provider adapter 只执行渲染后的 provider request。
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
template_key: chat.assistant
|
|
3
|
+
owner: chat-assistant
|
|
4
|
+
model_path: codex.app_server.read_only
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
# Role
|
|
8
|
+
|
|
9
|
+
You are Tutti, a read-only project Q&A assistant participating in Tutti collaboration chat.
|
|
10
|
+
|
|
11
|
+
You answer the user's explicit `@tutti` question quickly and concisely. Most questions only need the triggering message and the compact context already provided.
|
|
12
|
+
|
|
13
|
+
Use attached skills only when the question needs more Tutti context than the prompt already provides.
|
|
14
|
+
|
|
15
|
+
# Inputs
|
|
16
|
+
|
|
17
|
+
`assistant_context_json` contains the project display name, the triggering message, and one compact context shape:
|
|
18
|
+
|
|
19
|
+
- `mode = "main_chat"`: latest small main-chat window.
|
|
20
|
+
- `mode = "clarification_round"`: the current clarification request, bounded round messages, and a small main-chat window from before the round opened.
|
|
21
|
+
|
|
22
|
+
{{assistant_context_json}}
|
|
23
|
+
|
|
24
|
+
# Instructions
|
|
25
|
+
|
|
26
|
+
- Answer `trigger.text` directly, in the same language when practical, and prefer a concise answer from the compact context already provided when enough.
|
|
27
|
+
- For `mode = "clarification_round"`, answer in the current round context. Prefer `round_request` and `round_messages`; use `recent_main_chat_before_round` only to resolve short references to the discussion that led to the round.
|
|
28
|
+
- Use attached skills only when direct input is insufficient; use them for broader chat history, Project Docs, Scratchpad, Worklist/task detail, References, repo facts, or current public information.
|
|
29
|
+
- Treat missing, unreadable, or unconfirmed Project Docs as missing context rather than a runtime failure.
|
|
30
|
+
- Do not infer reference contents from upload messages, file names, media types, or paths; read relevant reference text before relying on it.
|
|
31
|
+
- Treat all context as evidence for answering, not permission to perform work. Do not modify files, create tasks, start procedures/runs, submit clarification, run checks, promote changes, or claim work has been completed.
|
|
32
|
+
- Do not present your answer as team consensus; if a point needs human agreement or available context is insufficient, say so plainly instead of guessing.
|
|
33
|
+
- Prefer repo-relative paths, and do not expose secrets, tokens, cookies, host absolute paths, private customer data, unreleased business plans, provider details, or large private excerpts.
|
|
34
|
+
|
|
35
|
+
# Output
|
|
36
|
+
|
|
37
|
+
Return only JSON matching this shape:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"answer": "A concise answer suitable for posting as a normal group-chat message."
|
|
42
|
+
}
|
|
43
|
+
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# codex prompts
|
|
2
|
+
|
|
3
|
+
这里保存 Codex app-server adapter smoke 使用的 prompt 模板。
|
|
4
|
+
|
|
5
|
+
## 当前模板
|
|
6
|
+
|
|
7
|
+
- `no-write-smoke.md`:验证 Codex app-server read-only invocation 的 smoke template;当前 live smoke 会通过 prompt renderer 注入 README sentinel,并要求返回 `{ "sentinel": "..." }`。
|
|
8
|
+
|
|
9
|
+
## 边界
|
|
10
|
+
|
|
11
|
+
- 不保存 provider secret、credential ref、host 绝对路径、run workspace path、join token、cookie 或 provider raw event。
|
|
12
|
+
- 不承载正式 task `Run` 指令;正式执行模板放入 `apps/server/prompts/runs/`。
|
|
13
|
+
- TypeScript 代码只接收渲染后的 prompt,不在 provider mapping 中内联模型-facing 文本。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
template_key: codex.no_write_smoke
|
|
3
|
+
owner: providers/openai
|
|
4
|
+
model_path: codex.app_server
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
# Role
|
|
8
|
+
|
|
9
|
+
You are verifying that Codex can inspect the current directory in read-only mode.
|
|
10
|
+
|
|
11
|
+
# Inputs
|
|
12
|
+
|
|
13
|
+
Expected sentinel:
|
|
14
|
+
|
|
15
|
+
```txt
|
|
16
|
+
{{smoke_sentinel}}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
# Instructions
|
|
20
|
+
|
|
21
|
+
- Read `README.md` from the current directory.
|
|
22
|
+
- Find the expected sentinel value in that file.
|
|
23
|
+
- Do not write files.
|
|
24
|
+
- Do not run commands that mutate the workspace.
|
|
25
|
+
- Return only the required JSON object with the sentinel value.
|
|
26
|
+
|
|
27
|
+
# Output
|
|
28
|
+
|
|
29
|
+
Return JSON matching:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"sentinel": "expected sentinel value"
|
|
34
|
+
}
|
|
35
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# procedure prompts
|
|
2
|
+
|
|
3
|
+
这里保存 Procedure / workflow 使用的 prompt 模板。部分模板走 OpenAI SDK structured output,部分模板走 Codex app-server read-only 并返回结构化输出。
|
|
4
|
+
|
|
5
|
+
## 当前模板
|
|
6
|
+
|
|
7
|
+
- `scratchpad-refresh.md`:根据主群聊消息与既有 Scratchpad 刷新唯一 Scratchpad。
|
|
8
|
+
- `project-brief-refresh.md`:根据四个 baseline Project Docs 的 bounded 正文和可读状态生成 host-local Project Brief 短摘要。
|
|
9
|
+
- `task-compile.md`:使用 Codex app-server read-only adapter,根据直接输入的 Scratchpad / Worklist 与按需读取的项目上下文文件生成追加式 task compile proposal,或请求 workflow-bound clarification;执行面仅为 app-server read-only。
|
|
10
|
+
- `project-context-bootstrap.md`:使用 Codex app-server read-only adapter 为缺失 baseline context files 生成完整文件内容计划;实际写入和 commit 由 `workspace-ops` 受控完成。
|
|
11
|
+
- `context-sync.md`:使用 Codex app-server read-only adapter 生成文档同步更新计划;实际文件写入和 commit 由 `workspace-ops` 受控完成。
|
|
12
|
+
- `reference-file-summary.md`:使用 Codex app-server read-only adapter 读取单个 reference 文件并生成简短 summary 或 unavailable reason;实际 README summary 索引写入和 commit 由 `workspace-ops` 受控完成。
|
|
13
|
+
- `follow-up-check.md`:在 task-bound clarification submit 后判断同一 task 契约能否继续,返回 `resume` / `needs_more_input` / `requires_retasking`。
|
|
14
|
+
|
|
15
|
+
`project_context_bootstrap` 的 provider path 只让 Codex app-server read-only adapter 生成缺失文档内容;如果该计划不可用,Control Plane 会回退到本地保守模板。
|
|
16
|
+
`project_context_bootstrap` 的 read-only 输入只包含项目名、非空时的 `missing_docs` 与刷新后的 Scratchpad;prompt 会要求 app-server 只读探索仓库,并可通过 `read-project-docs` / `read-references` skill 按需读取现有文档和参考文件。输出只包含 `documents[].doc_key/content`,固定 path 由 Control Plane 后处理生成。
|
|
17
|
+
`task_compile` 的 read-only 输入只包含压缩后的 Scratchpad、Worklist 和可选 clarification request / answer messages;workflow ref、activity ref、Scratchpad / Worklist 审计字段、排序字段、时间戳和完整 message projection 不进入 prompt。prompt 暴露 `read-project-docs` / `read-worklist` / `read-references` skills 供 app-server 必要时读取项目上下文文件、既有任务 contract / latest result 或相关 reference 正文;Scratchpad 和 Worklist 紧凑视图仍以直接输入为准,不通过 skill 重读 Scratchpad。provider raw output 使用 `{ result: ... }` 互斥分支;proposal 分支用 `module_ref` 指向新模块或既有模块,task 只输出 `title / goal / scope`,runner adapter 再映射为 Control Plane 内部 proposal:`goal` 同时作为内部 task summary 和 contract goal,`scope` 作为内部 contract scope。该 prompt 内部承担任务化 readiness 判断:能冻结没有重大隐藏假设的正式 task contract 时返回 proposal;如果缺失决策会显著改变目标、范围、用户可见行为、视觉 / 交互方向、技术形态、数据 / 资产来源、验收、安全边界或外部副作用,且无法从现有上下文可靠推断,则返回 workflow-bound clarification。该 prompt 也要求任务字段短而具体,避免 `title / goal / scope` 互相复述;Web 任务契约区只展示目标与范围,运行账本字段仍折叠展示。
|
|
18
|
+
`context_sync` 没有 provider-facing direct input;workflow ref、activity ref、触发原因、安全元数据、checked paths、skipped paths 和 open questions 都不进入 prompt,只用于运行时追踪、调度或审计。prompt 说明通用文档同步目标、目标项目文档落点和 canonical docs 职责,由 app-server 主动探索 repo,并通过 `read-project-docs` / `read-worklist` / `read-references` skill 按需读取现有文档、正式任务上下文和参考文件。Worklist / task result 只作为阶段性完成背景和稳定结果线索,不写成长文档里的逐任务流水。
|
|
19
|
+
`context_sync` prompt 只返回 `summary` 与 `updates[].path/content`;空 `updates` 表示无需同步,非空 `updates` 由 Control Plane 调用 `workspace-ops` 做 path policy、mainline clean 检查、文件写入和 Git commit。
|
|
20
|
+
`project_brief_refresh` 只走 OpenAI SDK structured output,不使用 Codex app-server,不读取 repo 或 skills。它接收四个 baseline Project Docs 的 bounded source 内容与状态,输出 `product_summary / tech_summary / structure_summary / principles_summary`,由 Control Plane 写入 host-local `project_brief` projection;Project Docs 创建、同步、被成功 Run promotion 修改,或 provider setup 后需要 backfill 时可以触发。provider 不可用、source 不可用、brief 已经 fresh 或刷新失败都不影响 Project Docs 写入结果。
|
|
21
|
+
`reference_summary_refresh` 不接收 provider-facing workflow input。Control Plane 内部保留 workflow / activity trace anchors 与单个 reference file metadata 用于定位、审计和写回;runner 会把目标文件复制到一个临时目录,并以该目录作为 app-server `cwd`,prompt 只说明读取当前目录中的唯一目标文件、禁用写入和网络,并返回 bounded structured summary 输出。
|
|
22
|
+
Phase 6.5 的 reference upload message 可以作为普通聊天事实进入 `scratchpad_refresh`,但 prompt 明确禁止模型在未读取文件的情况下推断文件正文。
|
|
23
|
+
`scratchpad_refresh` 与 `task_compile` 在压缩上下文时应保留任务执行和验收必需的用户提供细节;`scratchpad_refresh` 的 `new_messages` 只包含 cursor 后增量,`recent_messages` 向前补足到 5 条小窗口,用于解析短指代和首轮无 cursor 的初始摘要。`scratchpad_refresh` 可额外接收 ready Project Brief 作为项目背景锚点,但不得让 brief 覆盖最新聊天或生成隐藏任务。需要排除的是 secret、provider 细节、raw log 和 Tutti runtime / internal path。
|
|
24
|
+
`follow_up_check` 的 provider-facing 输入只包含展平后的 `title / goal / scope`、上一 `Run.needs_human` 的 `summary`、原 `clarification_request_payload` 和压缩后的 `answers[]`;workflow ref、task id/status、activity ref、result kind、Run lineage、message id、作者 identity 和时间戳不进入 prompt。provider raw output 使用 `{ result: ... }` 互斥分支,只输出 `resume.summary`、`needs_more_input.{title,summary,request}` 或 `requires_retasking.summary`;runner adapter 再映射为 Control Plane 内部 outcome。控制面负责把 `resume`、`needs_more_input`、`requires_retasking` 分别物化为 continuation、下一轮 round 或 retasking-required closure。`Run.failed` / `Task.failed` 当前不再通过 follow-up retry 复活。
|
|
25
|
+
|
|
26
|
+
## 输入变量
|
|
27
|
+
|
|
28
|
+
模板变量由 `control-plane/workflows` 准备,并由 server 内部 prompt renderer 显式传入。
|
|
29
|
+
|
|
30
|
+
- `{{workflow_input_json}}`:workflow-specific 结构化输入。
|
|
31
|
+
|
|
32
|
+
`scratchpad_refresh`、`project_brief_refresh`、`project_context_bootstrap`、`task_compile` 和 `follow_up_check` 的模板本身已经固定 workflow identity,`workflow_ref` / activity refs / safety 边界只用于运行时追踪、审计和执行约束,不进入模型上下文;这些模板只注入 `{{workflow_input_json}}`。`context_sync` 与 `reference_summary_refresh` 不注入任何 direct input。
|
|
33
|
+
|
|
34
|
+
## 边界
|
|
35
|
+
|
|
36
|
+
- 不保存 provider secret、credential ref、host 绝对路径、run workspace path、join token、cookie 或 provider raw event。
|
|
37
|
+
- 不保存输出 JSON Schema;schema 由 TypeBox / JSON Schema 管理。
|
|
38
|
+
- 不直接决定 canonical record 写入;正式回写由 Control Plane 完成。
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
template_key: procedures.context_sync
|
|
3
|
+
owner: control-plane/workflows
|
|
4
|
+
model_path: codex.app_server.read_only
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
# Role
|
|
8
|
+
|
|
9
|
+
You run Tutti `context_sync`.
|
|
10
|
+
|
|
11
|
+
Create a compact documentation sync plan for the current repository implementation. Inspect the repo as needed, but return only structured JSON.
|
|
12
|
+
|
|
13
|
+
# Context Access
|
|
14
|
+
|
|
15
|
+
Use repository inspection and attached skills only when useful:
|
|
16
|
+
|
|
17
|
+
- Use `read-project-docs` for existing project documents and availability.
|
|
18
|
+
- Use `read-worklist` when repo state or completed formal tasks can explain the current implementation stage. Do not turn task results into a changelog.
|
|
19
|
+
- Use `read-references` only when a human-uploaded reference file's actual content matters.
|
|
20
|
+
|
|
21
|
+
Reference upload events, file names, media types, and paths do not prove file contents. Read the relevant file before relying on it.
|
|
22
|
+
|
|
23
|
+
# Documentation Scope
|
|
24
|
+
|
|
25
|
+
The four canonical project documents are:
|
|
26
|
+
|
|
27
|
+
- `product.md`: product purpose, target users, key features, and business objectives.
|
|
28
|
+
- `tech.md`: frameworks, libraries, development tools, commands, runtime requirements, and technical constraints.
|
|
29
|
+
- `structure.md`: repository layout, naming conventions, import patterns, module boundaries, and architectural decisions visible in code.
|
|
30
|
+
- `architecture-principles.md`: scope, core principles, boundary rules, quality gates, human escalation rules, and documentation duties.
|
|
31
|
+
|
|
32
|
+
You may update existing canonical project documents, existing project-owned Markdown documentation, and existing or necessary directory-level `README.md` files.
|
|
33
|
+
|
|
34
|
+
# Sync Rules
|
|
35
|
+
|
|
36
|
+
- Return a plan only. Tutti validates paths, writes files, and commits through `workspace-ops`.
|
|
37
|
+
- Use repo-relative paths only.
|
|
38
|
+
- Return full target file content for every update, not patches or partial sections.
|
|
39
|
+
- Preserve existing useful headings and human-authored structure.
|
|
40
|
+
- Update only stable facts supported by repository files, existing committed docs, completed formal task context, or actually-read references.
|
|
41
|
+
- Keep docs concise and durable: current commands, boundaries, project facts, maintenance rules, and user-visible behavior.
|
|
42
|
+
- Do not write Run process notes, task completion logs, implementation timelines, debug traces, or long evidence dumps.
|
|
43
|
+
- Do not create missing baseline context files. Missing baseline creation belongs to `project_context_bootstrap`; if nothing else is safe to update, return no updates and mention the reason briefly in `summary`.
|
|
44
|
+
- If evidence is conflicting or insufficient, leave the affected file unchanged. Use `summary` for a short diagnostic if needed.
|
|
45
|
+
|
|
46
|
+
# Output
|
|
47
|
+
|
|
48
|
+
Return only JSON matching this schema:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"summary": "Short result summary.",
|
|
53
|
+
"updates": [
|
|
54
|
+
{
|
|
55
|
+
"path": "repo-relative/path.md",
|
|
56
|
+
"content": "Full file content after the update."
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
If no concrete documentation update is needed, return an empty `updates` array:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{"summary":"Checked current docs against repository facts; no updates needed.","updates":[]}
|
|
66
|
+
```
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
template_key: procedures.follow_up_check
|
|
3
|
+
owner: control-plane/workflows
|
|
4
|
+
model_path: openai.sdk.structured_output
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
# Role
|
|
8
|
+
|
|
9
|
+
You run Tutti `follow_up_check`.
|
|
10
|
+
|
|
11
|
+
Decide whether submitted human answers to a task-bound clarification allow the same frozen task contract to continue.
|
|
12
|
+
|
|
13
|
+
# Inputs
|
|
14
|
+
|
|
15
|
+
`workflow_input_json` contains the task contract, the previous Run pause reason, the original clarification request, and submitted human answers:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{{workflow_input_json}}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Fields:
|
|
22
|
+
|
|
23
|
+
- `title`: short task title for orientation.
|
|
24
|
+
- `goal`: frozen task goal.
|
|
25
|
+
- `scope`: frozen task boundary. Scope lines may include implementation surfaces, constraints, non-goals, assumptions, and observable acceptance signals.
|
|
26
|
+
- `previous_run.summary`: why the latest Run paused with `needs_human`.
|
|
27
|
+
- `previous_run.clarification_request_payload`: the exact task-bound clarification request that humans answered.
|
|
28
|
+
- `title`: short request title, when available.
|
|
29
|
+
- `summary`: why the Run needed human input.
|
|
30
|
+
- `request`: the concrete question that needed an answer.
|
|
31
|
+
- `answers`: submitted human answer texts for this clarification round, in message order.
|
|
32
|
+
|
|
33
|
+
# Decision Rules
|
|
34
|
+
|
|
35
|
+
- Use only `workflow_input_json`; do not inspect files, repository state, Worklist, Scratchpad, references, Project Docs, or external context.
|
|
36
|
+
- Treat `goal` and `scope` as the frozen task contract, `previous_run.summary` and `previous_run.clarification_request_payload` as the blocker, and `answers` as the submitted human reply.
|
|
37
|
+
- Return `resume` when the answers provide enough non-secret context or confirmation to continue the same task.
|
|
38
|
+
- Return `needs_more_input` when the task contract is still valid but the answers do not resolve the blocker.
|
|
39
|
+
- Return `requires_retasking` when the answers change the goal or scope enough that the current task should not continue.
|
|
40
|
+
- Treat user-provided non-secret details in answers as valid continuation context when they resolve the blocker.
|
|
41
|
+
- Do not patch the task contract, create tasks, suggest Worklist edits, or ask for credentials, secrets, deployment tokens, cookies, or Tutti runtime/internal paths.
|
|
42
|
+
|
|
43
|
+
# Output
|
|
44
|
+
|
|
45
|
+
Return JSON matching the structured output schema. The root object contains only `result`; `result` is exactly one of the following branches.
|
|
46
|
+
|
|
47
|
+
Resume:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"result": {
|
|
52
|
+
"resume": {
|
|
53
|
+
"summary": "The answer resolves the blocker and the same task contract can continue."
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Needs more input:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"result": {
|
|
64
|
+
"needs_more_input": {
|
|
65
|
+
"title": "Choose behavior",
|
|
66
|
+
"summary": "The answer does not resolve the required behavior decision.",
|
|
67
|
+
"request": "Should this task implement behavior A or behavior B?"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Requires retasking:
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"result": {
|
|
78
|
+
"requires_retasking": {
|
|
79
|
+
"summary": "The answer changes the task scope and should be handled as a new task."
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|