@jterrats/open-orchestra 1.0.16 → 1.0.18
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/CHANGELOG.md +44 -0
- package/CLAUDE.md +25 -2
- package/README.md +32 -9
- package/dist/active-runtime-store.d.ts +18 -0
- package/dist/active-runtime-store.js +75 -0
- package/dist/active-runtime-store.js.map +1 -0
- package/dist/benchmark.js +65 -27
- package/dist/benchmark.js.map +1 -1
- package/dist/chat-api-errors.d.ts +7 -0
- package/dist/chat-api-errors.js +15 -0
- package/dist/chat-api-errors.js.map +1 -0
- package/dist/chat-api-message-persistence.d.ts +12 -0
- package/dist/chat-api-message-persistence.js +125 -0
- package/dist/chat-api-message-persistence.js.map +1 -0
- package/dist/chat-api-records.d.ts +35 -0
- package/dist/chat-api-records.js +94 -0
- package/dist/chat-api-records.js.map +1 -0
- package/dist/chat-api-service.d.ts +32 -0
- package/dist/chat-api-service.js +120 -0
- package/dist/chat-api-service.js.map +1 -0
- package/dist/chat-api-storage.d.ts +1 -0
- package/dist/chat-api-storage.js +14 -0
- package/dist/chat-api-storage.js.map +1 -0
- package/dist/chat-api-types.d.ts +81 -0
- package/dist/chat-api-types.js +2 -0
- package/dist/chat-api-types.js.map +1 -0
- package/dist/chat-compliance-service.d.ts +60 -0
- package/dist/chat-compliance-service.js +241 -0
- package/dist/chat-compliance-service.js.map +1 -0
- package/dist/chat-event-stream.d.ts +13 -0
- package/dist/chat-event-stream.js +124 -0
- package/dist/chat-event-stream.js.map +1 -0
- package/dist/chat-pagination.d.ts +6 -0
- package/dist/chat-pagination.js +64 -0
- package/dist/chat-pagination.js.map +1 -0
- package/dist/chat-storage-actor-validation.d.ts +4 -0
- package/dist/chat-storage-actor-validation.js +65 -0
- package/dist/chat-storage-actor-validation.js.map +1 -0
- package/dist/chat-storage-content-policy.d.ts +6 -0
- package/dist/chat-storage-content-policy.js +84 -0
- package/dist/chat-storage-content-policy.js.map +1 -0
- package/dist/chat-storage-errors.d.ts +20 -0
- package/dist/chat-storage-errors.js +17 -0
- package/dist/chat-storage-errors.js.map +1 -0
- package/dist/chat-storage-local-files.d.ts +17 -0
- package/dist/chat-storage-local-files.js +78 -0
- package/dist/chat-storage-local-files.js.map +1 -0
- package/dist/chat-storage-local-paths.d.ts +6 -0
- package/dist/chat-storage-local-paths.js +124 -0
- package/dist/chat-storage-local-paths.js.map +1 -0
- package/dist/chat-storage-local-projection.d.ts +10 -0
- package/dist/chat-storage-local-projection.js +55 -0
- package/dist/chat-storage-local-projection.js.map +1 -0
- package/dist/chat-storage-local-records.d.ts +13 -0
- package/dist/chat-storage-local-records.js +56 -0
- package/dist/chat-storage-local-records.js.map +1 -0
- package/dist/chat-storage-local.d.ts +6 -0
- package/dist/chat-storage-local.js +114 -0
- package/dist/chat-storage-local.js.map +1 -0
- package/dist/chat-storage-validation.d.ts +10 -0
- package/dist/chat-storage-validation.js +100 -0
- package/dist/chat-storage-validation.js.map +1 -0
- package/dist/chat-storage.d.ts +16 -0
- package/dist/chat-storage.js +4 -0
- package/dist/chat-storage.js.map +1 -0
- package/dist/chat-workflow-timeline.d.ts +17 -0
- package/dist/chat-workflow-timeline.js +210 -0
- package/dist/chat-workflow-timeline.js.map +1 -0
- package/dist/{workspace-claude-settings.d.ts → claude-settings.d.ts} +22 -3
- package/dist/{workspace-claude-settings.js → claude-settings.js} +28 -9
- package/dist/claude-settings.js.map +1 -0
- package/dist/command-init.d.ts +2 -0
- package/dist/command-init.js +150 -0
- package/dist/command-init.js.map +1 -0
- package/dist/command-manifest.js +1 -1
- package/dist/command-manifest.js.map +1 -1
- package/dist/commands.d.ts +1 -1
- package/dist/commands.js +1 -140
- package/dist/commands.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/context-runtime-preprocessor.d.ts +41 -0
- package/dist/context-runtime-preprocessor.js +199 -0
- package/dist/context-runtime-preprocessor.js.map +1 -0
- package/dist/cursor-settings.d.ts +25 -0
- package/dist/cursor-settings.js +72 -0
- package/dist/cursor-settings.js.map +1 -0
- package/dist/health-commands.js +43 -3
- package/dist/health-commands.js.map +1 -1
- package/dist/metrics-commands.js +3 -0
- package/dist/metrics-commands.js.map +1 -1
- package/dist/model-aliases.d.ts +5 -0
- package/dist/model-aliases.js +37 -0
- package/dist/model-aliases.js.map +1 -0
- package/dist/ollama-provider.js +25 -0
- package/dist/ollama-provider.js.map +1 -1
- package/dist/phase-playbooks.js +11 -0
- package/dist/phase-playbooks.js.map +1 -1
- package/dist/provider-agent-wrapper.js +14 -0
- package/dist/provider-agent-wrapper.js.map +1 -1
- package/dist/runtime-adapters.js +56 -0
- package/dist/runtime-adapters.js.map +1 -1
- package/dist/runtime-bootstrap.js +34 -11
- package/dist/runtime-bootstrap.js.map +1 -1
- package/dist/runtime-capacity-policy.d.ts +38 -0
- package/dist/runtime-capacity-policy.js +117 -0
- package/dist/runtime-capacity-policy.js.map +1 -0
- package/dist/runtime-capacity-scheduler-helpers.d.ts +40 -0
- package/dist/runtime-capacity-scheduler-helpers.js +111 -0
- package/dist/runtime-capacity-scheduler-helpers.js.map +1 -0
- package/dist/runtime-capacity-scheduler-state.d.ts +44 -0
- package/dist/runtime-capacity-scheduler-state.js +128 -0
- package/dist/runtime-capacity-scheduler-state.js.map +1 -0
- package/dist/runtime-capacity-scheduler.d.ts +34 -0
- package/dist/runtime-capacity-scheduler.js +193 -0
- package/dist/runtime-capacity-scheduler.js.map +1 -0
- package/dist/runtime-capacity-snapshot.d.ts +14 -0
- package/dist/runtime-capacity-snapshot.js +87 -0
- package/dist/runtime-capacity-snapshot.js.map +1 -0
- package/dist/runtime-child-prompt.d.ts +2 -1
- package/dist/runtime-child-prompt.js +12 -1
- package/dist/runtime-child-prompt.js.map +1 -1
- package/dist/runtime-claude-native-bridge.js +2 -1
- package/dist/runtime-claude-native-bridge.js.map +1 -1
- package/dist/runtime-commands.js +6 -0
- package/dist/runtime-commands.js.map +1 -1
- package/dist/runtime-context-manifest.d.ts +4 -1
- package/dist/runtime-context-manifest.js +59 -3
- package/dist/runtime-context-manifest.js.map +1 -1
- package/dist/runtime-execution-adapters.js +19 -0
- package/dist/runtime-execution-adapters.js.map +1 -1
- package/dist/runtime-execution-renderer.js +4 -0
- package/dist/runtime-execution-renderer.js.map +1 -1
- package/dist/runtime-execution.js +13 -82
- package/dist/runtime-execution.js.map +1 -1
- package/dist/runtime-hooks.d.ts +46 -0
- package/dist/runtime-hooks.js +95 -0
- package/dist/runtime-hooks.js.map +1 -0
- package/dist/runtime-lifecycle-watch.d.ts +5 -2
- package/dist/runtime-lifecycle-watch.js +19 -3
- package/dist/runtime-lifecycle-watch.js.map +1 -1
- package/dist/runtime-load-balancer.d.ts +12 -0
- package/dist/runtime-load-balancer.js +106 -0
- package/dist/runtime-load-balancer.js.map +1 -0
- package/dist/runtime-parent-actions.js +5 -0
- package/dist/runtime-parent-actions.js.map +1 -1
- package/dist/runtime-spawn-bridge.js +24 -0
- package/dist/runtime-spawn-bridge.js.map +1 -1
- package/dist/runtime-spawn-guidance.js +15 -46
- package/dist/runtime-spawn-guidance.js.map +1 -1
- package/dist/runtime-worker-registry.d.ts +19 -0
- package/dist/runtime-worker-registry.js +84 -0
- package/dist/runtime-worker-registry.js.map +1 -0
- package/dist/security/chat-guardrail-policy.d.ts +7 -0
- package/dist/security/chat-guardrail-policy.js +61 -0
- package/dist/security/chat-guardrail-policy.js.map +1 -0
- package/dist/security/chat-guardrail-types.d.ts +65 -0
- package/dist/security/chat-guardrail-types.js +2 -0
- package/dist/security/chat-guardrail-types.js.map +1 -0
- package/dist/security/chat-guardrail-validation.d.ts +9 -0
- package/dist/security/chat-guardrail-validation.js +64 -0
- package/dist/security/chat-guardrail-validation.js.map +1 -0
- package/dist/security/chat-guardrails.d.ts +3 -0
- package/dist/security/chat-guardrails.js +136 -0
- package/dist/security/chat-guardrails.js.map +1 -0
- package/dist/security/content-classifier.d.ts +2 -0
- package/dist/security/content-classifier.js +179 -0
- package/dist/security/content-classifier.js.map +1 -0
- package/dist/security/operation-contract-types.d.ts +28 -0
- package/dist/security/operation-contract-types.js +2 -0
- package/dist/security/operation-contract-types.js.map +1 -0
- package/dist/security/operation-contract.d.ts +2 -0
- package/dist/security/operation-contract.js +169 -0
- package/dist/security/operation-contract.js.map +1 -0
- package/dist/security/payment-card-detection.d.ts +3 -0
- package/dist/security/payment-card-detection.js +48 -0
- package/dist/security/payment-card-detection.js.map +1 -0
- package/dist/security/policy-engine.d.ts +2 -0
- package/dist/security/policy-engine.js +142 -0
- package/dist/security/policy-engine.js.map +1 -0
- package/dist/security/policy-types.d.ts +79 -0
- package/dist/security/policy-types.js +7 -0
- package/dist/security/policy-types.js.map +1 -0
- package/dist/security/prompt-intake.d.ts +13 -0
- package/dist/security/prompt-intake.js +33 -0
- package/dist/security/prompt-intake.js.map +1 -0
- package/dist/security/provider-egress-policy.d.ts +27 -0
- package/dist/security/provider-egress-policy.js +72 -0
- package/dist/security/provider-egress-policy.js.map +1 -0
- package/dist/security/public-api-auth.d.ts +20 -0
- package/dist/security/public-api-auth.js +55 -0
- package/dist/security/public-api-auth.js.map +1 -0
- package/dist/security/public-api-policy.d.ts +8 -0
- package/dist/security/public-api-policy.js +40 -0
- package/dist/security/public-api-policy.js.map +1 -0
- package/dist/security/redaction.d.ts +3 -0
- package/dist/security/redaction.js +95 -0
- package/dist/security/redaction.js.map +1 -0
- package/dist/security/restricted-content-quarantine.d.ts +17 -0
- package/dist/security/restricted-content-quarantine.js +50 -0
- package/dist/security/restricted-content-quarantine.js.map +1 -0
- package/dist/security/restricted-data-classifier.d.ts +9 -0
- package/dist/security/restricted-data-classifier.js +254 -0
- package/dist/security/restricted-data-classifier.js.map +1 -0
- package/dist/security/sink-encoding.d.ts +6 -0
- package/dist/security/sink-encoding.js +40 -0
- package/dist/security/sink-encoding.js.map +1 -0
- package/dist/skills-render.js +7 -14
- package/dist/skills-render.js.map +1 -1
- package/dist/sprint-commands.js +33 -22
- package/dist/sprint-commands.js.map +1 -1
- package/dist/telemetry-redaction.d.ts +2 -0
- package/dist/telemetry-redaction.js +25 -2
- package/dist/telemetry-redaction.js.map +1 -1
- package/dist/transcription-failures.d.ts +2 -0
- package/dist/transcription-failures.js +4 -0
- package/dist/transcription-failures.js.map +1 -0
- package/dist/transcription-media-preflight.d.ts +9 -0
- package/dist/transcription-media-preflight.js +147 -0
- package/dist/transcription-media-preflight.js.map +1 -0
- package/dist/transcription-request.d.ts +13 -0
- package/dist/transcription-request.js +150 -0
- package/dist/transcription-request.js.map +1 -0
- package/dist/transcription-source-policy.d.ts +4 -0
- package/dist/transcription-source-policy.js +43 -0
- package/dist/transcription-source-policy.js.map +1 -0
- package/dist/transcription-types.d.ts +161 -0
- package/dist/transcription-types.js +2 -0
- package/dist/transcription-types.js.map +1 -0
- package/dist/types/chat.d.ts +203 -0
- package/dist/types/chat.js +10 -0
- package/dist/types/chat.js.map +1 -0
- package/dist/types/model-config.d.ts +4 -0
- package/dist/types/public-api.d.ts +75 -0
- package/dist/types/public-api.js +2 -0
- package/dist/types/public-api.js.map +1 -0
- package/dist/types/restricted-data.d.ts +69 -0
- package/dist/types/restricted-data.js +8 -0
- package/dist/types/restricted-data.js.map +1 -0
- package/dist/types/restricted-fragment.d.ts +82 -0
- package/dist/types/restricted-fragment.js +14 -0
- package/dist/types/restricted-fragment.js.map +1 -0
- package/dist/types/runtime.d.ts +159 -0
- package/dist/types.d.ts +9 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/web-api.js +24 -0
- package/dist/web-api.js.map +1 -1
- package/dist/web-artifact-parsers.d.ts +6 -0
- package/dist/web-artifact-parsers.js +244 -0
- package/dist/web-artifact-parsers.js.map +1 -0
- package/dist/web-artifact-types.d.ts +76 -0
- package/dist/web-artifact-types.js +2 -0
- package/dist/web-artifact-types.js.map +1 -0
- package/dist/web-artifacts.d.ts +2 -43
- package/dist/web-artifacts.js +73 -58
- package/dist/web-artifacts.js.map +1 -1
- package/dist/web-chat-route-inputs.d.ts +11 -0
- package/dist/web-chat-route-inputs.js +156 -0
- package/dist/web-chat-route-inputs.js.map +1 -0
- package/dist/web-chat-routes.d.ts +7 -0
- package/dist/web-chat-routes.js +213 -0
- package/dist/web-chat-routes.js.map +1 -0
- package/dist/web-console/assets/index-CJup1cIA.css +1 -0
- package/dist/web-console/assets/index-CVDOfipu.js +11 -0
- package/dist/web-console/index.html +2 -2
- package/dist/web-evidence.d.ts +1 -1
- package/dist/web-evidence.js +9 -2
- package/dist/web-evidence.js.map +1 -1
- package/dist/web-public-route-inputs.d.ts +14 -0
- package/dist/web-public-route-inputs.js +136 -0
- package/dist/web-public-route-inputs.js.map +1 -0
- package/dist/web-public-routes.d.ts +6 -0
- package/dist/web-public-routes.js +194 -0
- package/dist/web-public-routes.js.map +1 -0
- package/dist/web-public-service.d.ts +16 -0
- package/dist/web-public-service.js +154 -0
- package/dist/web-public-service.js.map +1 -0
- package/dist/workflow-phase-planner.js +5 -3
- package/dist/workflow-phase-planner.js.map +1 -1
- package/dist/workflow-phases.js +5 -0
- package/dist/workflow-phases.js.map +1 -1
- package/dist/workflow-run-commands.js +89 -10
- package/dist/workflow-run-commands.js.map +1 -1
- package/dist/workflow-services.js +5 -0
- package/dist/workflow-services.js.map +1 -1
- package/dist/workspace-runtime-bootstrap.js +15 -4
- package/dist/workspace-runtime-bootstrap.js.map +1 -1
- package/docs/audio-video-transcription-skill.md +102 -70
- package/docs/chat-audit-retention.md +76 -0
- package/docs/chat-provider-provenance-ledger.md +75 -0
- package/docs/context-runtime-preprocessing.md +37 -0
- package/docs/orchestra-mvp.md +8 -2
- package/docs/public-api-contract.md +43 -0
- package/docs/release-test-matrix.md +14 -14
- package/docs/restricted-fragment-storage-contract.md +147 -0
- package/docs/runtime-adapters.md +47 -7
- package/docs/runtime-capacity.md +57 -0
- package/docs/security-saas-orchestrator.md +368 -0
- package/docs/site-manifest.json +128 -30
- package/package.json +5 -2
- package/site/dist/_headers +9 -0
- package/site/dist/_redirects +2 -0
- package/site/dist/architecture.mmd +61 -0
- package/site/dist/assets/index-Bi8l6tCE.js +10 -0
- package/site/dist/assets/index-BsCLqY__.css +1 -0
- package/site/dist/favicon.svg +19 -0
- package/site/dist/index.html +28 -0
- package/site/package.json +19 -0
- package/dist/web-console/assets/index-BHs7OIv8.css +0 -1
- package/dist/web-console/assets/index-BJuVTqfQ.js +0 -11
- package/dist/workspace-claude-settings.js.map +0 -1
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
# SaaS And Orchestrator Security Definition
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Open Orchestra is local-first workflow orchestration for humans and agent
|
|
6
|
+
runtimes. The CLI owns the current source of truth in `.agent-workflow/`; the
|
|
7
|
+
web console, runtime adapters, provider-backed phases, tracker integrations, and
|
|
8
|
+
future SaaS surfaces must preserve that local trust model instead of turning
|
|
9
|
+
agent automation into an implicit privileged service.
|
|
10
|
+
|
|
11
|
+
This document defines the baseline security model for the local CLI and the
|
|
12
|
+
future SaaS orchestrator. It intentionally avoids secrets, tenant identifiers,
|
|
13
|
+
private hosts, and production endpoints.
|
|
14
|
+
|
|
15
|
+
## Security Objectives
|
|
16
|
+
|
|
17
|
+
- Keep local repositories, workflow state, secrets, and evidence under explicit
|
|
18
|
+
user or tenant control.
|
|
19
|
+
- Treat prompts, issues, comments, model output, uploaded artifacts, generated
|
|
20
|
+
plans, tool metadata, and runtime handoffs as untrusted input.
|
|
21
|
+
- Fail closed for cross-tenant access, secret exposure, unsafe writes, shell
|
|
22
|
+
execution, provider policy violations, and evidence integrity failures.
|
|
23
|
+
- Make every privileged action reviewable through role gates, policy decisions,
|
|
24
|
+
and evidence records.
|
|
25
|
+
- Support offline local development without weakening the SaaS security posture.
|
|
26
|
+
|
|
27
|
+
## System View
|
|
28
|
+
|
|
29
|
+
```mermaid
|
|
30
|
+
flowchart LR
|
|
31
|
+
human["Human operator"]
|
|
32
|
+
cli["Local CLI"]
|
|
33
|
+
web["Local web console"]
|
|
34
|
+
api["Future SaaS API"]
|
|
35
|
+
workflow["Workflow core"]
|
|
36
|
+
state[".agent-workflow state"]
|
|
37
|
+
workers["SaaS workers"]
|
|
38
|
+
runtimes["Agent runtimes"]
|
|
39
|
+
tools["MCP and local tools"]
|
|
40
|
+
providers["Model providers"]
|
|
41
|
+
trackers["GitHub, Sonar, trackers"]
|
|
42
|
+
storage["Tenant storage and evidence ledger"]
|
|
43
|
+
|
|
44
|
+
human --> cli
|
|
45
|
+
human --> web
|
|
46
|
+
web --> cli
|
|
47
|
+
cli --> workflow
|
|
48
|
+
workflow --> state
|
|
49
|
+
workflow --> runtimes
|
|
50
|
+
workflow --> tools
|
|
51
|
+
workflow --> providers
|
|
52
|
+
workflow --> trackers
|
|
53
|
+
api --> workers
|
|
54
|
+
workers --> storage
|
|
55
|
+
workers --> providers
|
|
56
|
+
workers --> trackers
|
|
57
|
+
workers --> runtimes
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The local CLI remains the default control plane. SaaS components may coordinate,
|
|
61
|
+
store sanitized workflow metadata, and run isolated workers, but they must not
|
|
62
|
+
receive raw secrets, raw repository contents, or direct runtime authority unless
|
|
63
|
+
tenant policy and role gates explicitly allow it.
|
|
64
|
+
|
|
65
|
+
## Trust Boundaries
|
|
66
|
+
|
|
67
|
+
- Human to CLI: trust the installed CLI binary, local config, and explicit
|
|
68
|
+
flags. Treat terminal input, pasted prompts, and shell environment as
|
|
69
|
+
untrusted. Require argument validation, safe defaults, no secret echo, and
|
|
70
|
+
confirmation before writes outside known workflow paths.
|
|
71
|
+
- CLI to workspace: trust the workspace root and allowlisted
|
|
72
|
+
`.agent-workflow/` paths. Treat user files, symlinks, generated paths, and
|
|
73
|
+
imported archives as untrusted. Require root containment, path traversal
|
|
74
|
+
rejection, symlink escape checks, and dry-run before broad writes.
|
|
75
|
+
- Local web console to CLI/API: trust the loopback-only local service and
|
|
76
|
+
command contracts. Treat browser input, request bodies, and local plugins as
|
|
77
|
+
untrusted. Require CSRF-aware mutations, strict JSON validation, no arbitrary
|
|
78
|
+
command endpoint, and sanitized errors.
|
|
79
|
+
- SaaS API to tenant workers: trust authenticated tenant context and policy.
|
|
80
|
+
Treat requests, uploaded artifacts, and webhook payloads as untrusted.
|
|
81
|
+
Require AuthN/AuthZ, tenant scoping, schema validation, rate limits, audit
|
|
82
|
+
logs, malware scanning, and secret scanning.
|
|
83
|
+
- Tenant to tenant: trust only the current tenant partition. Treat other
|
|
84
|
+
tenants, shared queues, and shared caches as untrusted. Require mandatory
|
|
85
|
+
tenant id in every data access path, row or storage isolation, cache key
|
|
86
|
+
partitioning, and per-tenant encryption context.
|
|
87
|
+
- Workflow core to runtimes: trust the rendered task packet and allowed
|
|
88
|
+
commands. Treat runtime instructions, child agent output, and handoff files as
|
|
89
|
+
untrusted. Require prompt-injection checks, ownership path limits, lifecycle
|
|
90
|
+
attestation, and no provider keys in packets.
|
|
91
|
+
- Runtime to tools/MCP: trust tool registry metadata and approved scopes. Treat
|
|
92
|
+
tool descriptions, tool results, and external MCP servers as untrusted.
|
|
93
|
+
Require tool identity pinning, capability allowlists, OAuth token isolation,
|
|
94
|
+
and output sanitization.
|
|
95
|
+
- Provider-backed phases: trust provider adapter policy and redacted context.
|
|
96
|
+
Treat model outputs and provider errors as untrusted. Require explicit opt-in,
|
|
97
|
+
tenant data policy, prompt and output filtering, cost limits, budget limits,
|
|
98
|
+
and redacted error handling.
|
|
99
|
+
- Trackers and scanners: trust stable adapter contracts. Treat issues,
|
|
100
|
+
comments, scan reports, and CI logs as untrusted. Require remote text to be
|
|
101
|
+
handled as data, redact secrets, and verify webhook signatures when
|
|
102
|
+
applicable.
|
|
103
|
+
- Evidence ledger: trust append-only local or tenant evidence records. Treat
|
|
104
|
+
generated evidence, command logs, screenshots, and runtime claims as
|
|
105
|
+
untrusted. Require hashing, provenance, immutable event ids, reviewer
|
|
106
|
+
sign-off, and tamper-evident summaries.
|
|
107
|
+
- Storage and backups: trust tenant storage service and KMS policy. Treat
|
|
108
|
+
object keys, retained artifacts, and backup restore paths as untrusted.
|
|
109
|
+
Require encryption at rest, retention policy, restore testing, access logs,
|
|
110
|
+
and delete workflows.
|
|
111
|
+
|
|
112
|
+
## Threat Model
|
|
113
|
+
|
|
114
|
+
- Prompt injection: untrusted text asks an agent to ignore gates, reveal
|
|
115
|
+
secrets, or mutate files. Treat instructions from issues, docs, comments,
|
|
116
|
+
tools, and model output as data; enforce system policy outside the prompt.
|
|
117
|
+
- Indirect prompt injection: a retrieved artifact hides malicious instructions
|
|
118
|
+
in evidence, PDFs, websites, or tool results. Scan and label context sources,
|
|
119
|
+
then strip or quarantine high-risk instruction patterns before runtime
|
|
120
|
+
packets.
|
|
121
|
+
- SQL or NoSQL injection: tenant filters or search queries alter data access.
|
|
122
|
+
Use parameterized queries, typed repositories, schema validation, and tenant
|
|
123
|
+
predicates applied server-side.
|
|
124
|
+
- Command injection: user or model text reaches a shell command. Use
|
|
125
|
+
`execFile` or `spawn` with argument arrays; block shell interpolation and
|
|
126
|
+
`shell: true` unless a reviewed exception exists.
|
|
127
|
+
- SSRF: SaaS workers fetch attacker-controlled internal URLs. Allow only
|
|
128
|
+
`https://` URLs, deny private and metadata address ranges, use egress policy,
|
|
129
|
+
and avoid server-side fetches without approval.
|
|
130
|
+
- Path traversal: generated paths escape the workspace or tenant storage
|
|
131
|
+
prefix. Resolve canonical paths, reject `..` and symlink escapes, and require
|
|
132
|
+
approved roots for secure files.
|
|
133
|
+
- Secrets exfiltration: tokens appear in prompts, evidence, logs, provider
|
|
134
|
+
errors, or artifacts. Load secrets from secret managers or approved local
|
|
135
|
+
files, redact before persistence, and never send secrets to model context.
|
|
136
|
+
- Tenant isolation failure: a request, cache, worker, or artifact crosses tenant
|
|
137
|
+
scope. Require tenant-scoped auth, data access, queue names, cache keys,
|
|
138
|
+
storage prefixes, audit events, and encryption context.
|
|
139
|
+
- Unsafe file writes: runtime or SaaS worker writes outside intended docs,
|
|
140
|
+
workflow, or output paths. Require ownership paths, dry-run previews for broad
|
|
141
|
+
changes, path policy checks, and user approval for sensitive writes.
|
|
142
|
+
- Tool impersonation: a malicious tool mimics a trusted MCP server, scanner, or
|
|
143
|
+
runtime adapter. Pin tool identity, origin, executable path, version, and
|
|
144
|
+
capability manifest; reject writable PATH tool discovery for sensitive tools.
|
|
145
|
+
- Evidence tampering: a runtime edits evidence or claims tests passed without
|
|
146
|
+
proof. Require append-only evidence events, command metadata, hashes for large
|
|
147
|
+
artifacts, reviewer gates, and mismatch detection.
|
|
148
|
+
- Cross-site request forgery: a browser triggers local web console mutations.
|
|
149
|
+
Keep local services loopback-only by default, require mutation tokens or
|
|
150
|
+
same-origin controls, and avoid ambient credentials.
|
|
151
|
+
- Dependency compromise: a package or binary changes behavior after install.
|
|
152
|
+
Pin lockfiles, scan dependencies, verify sensitive binaries from trusted
|
|
153
|
+
paths, and keep dependency updates atomic.
|
|
154
|
+
- Denial of wallet or quota: provider-backed phases consume unexpected tokens,
|
|
155
|
+
jobs, or storage. Enforce per-task and per-tenant budgets, rate limits,
|
|
156
|
+
cancellation, cost evidence, and fail-closed budget handling.
|
|
157
|
+
|
|
158
|
+
## Secure-By-Default Controls
|
|
159
|
+
|
|
160
|
+
### Deterministic Policy Engine
|
|
161
|
+
|
|
162
|
+
The orchestration policy engine is a typed domain boundary, not prompt text.
|
|
163
|
+
It should expose one deterministic decision contract used by CLI commands,
|
|
164
|
+
runtime packet rendering, provider requests, tool calls, evidence writes,
|
|
165
|
+
tracker/webhook adapters, and future SaaS workers. Every sensitive operation
|
|
166
|
+
must pass a complete policy subject, action, resource, tenant/workspace scope,
|
|
167
|
+
data classification, and sink before side effects begin. Missing, ambiguous, or
|
|
168
|
+
schema-invalid input denies by default and records a sanitized reason.
|
|
169
|
+
|
|
170
|
+
Recommended module boundaries:
|
|
171
|
+
|
|
172
|
+
- `src/security/policy-types.ts`: discriminated unions for policy subjects,
|
|
173
|
+
actions, resources, sinks, decisions, redaction status, and denial reasons.
|
|
174
|
+
- `src/security/policy-engine.ts`: pure decision engine and rule registry. It
|
|
175
|
+
performs no filesystem, network, shell, provider, or persistence I/O.
|
|
176
|
+
- `src/security/prompt-intake.ts`: deserializes prompt/runtime packets into
|
|
177
|
+
typed segments and classifies each segment as instruction, data, tool input,
|
|
178
|
+
tool output, evidence, provider response, or unknown.
|
|
179
|
+
- `src/security/content-classifier.ts`: deterministic detectors for
|
|
180
|
+
query-like and executable-like strings, prompt-injection patterns, path
|
|
181
|
+
traversal, SSRF candidates, shell metacharacters, SQL/NoSQL-like payloads,
|
|
182
|
+
and secret-shaped values.
|
|
183
|
+
- `src/security/redaction.ts`: redacts restricted values, marks quarantined
|
|
184
|
+
segments, and returns a redaction report before persistence or model reuse.
|
|
185
|
+
- `src/security/sink-encoding.ts`: sink-specific escaping and encoding for
|
|
186
|
+
Markdown, JSON, shell arguments, URLs, HTML/text UI, logs, evidence, and
|
|
187
|
+
provider messages.
|
|
188
|
+
- `src/security/path-policy.ts`, `url-policy.ts`, `command-policy.ts`,
|
|
189
|
+
`tenant-policy.ts`, `tool-policy.ts`, `provider-policy.ts`,
|
|
190
|
+
`evidence-policy.ts`, and `runtime-packet-policy.ts`: focused rule modules
|
|
191
|
+
plugged into the pure engine.
|
|
192
|
+
- Existing adapters such as CLI commands, runtime renderers, provider
|
|
193
|
+
adapters, MCP/tool adapters, and workflow evidence services stay thin: build
|
|
194
|
+
typed policy requests, call the engine, then execute or fail closed.
|
|
195
|
+
|
|
196
|
+
Prompt/content intake pipeline:
|
|
197
|
+
|
|
198
|
+
1. Deserialize all prompt packets, context packs, tool results, provider
|
|
199
|
+
responses, handoffs, issue text, and evidence snippets with strict schemas.
|
|
200
|
+
Unknown fields and malformed envelopes become `unknown` segments and are not
|
|
201
|
+
forwarded to sensitive sinks.
|
|
202
|
+
2. Split content into typed segments with provenance, tenant/workspace/task
|
|
203
|
+
scope, source artifact, declared sink, and original byte length.
|
|
204
|
+
3. Detect query-like strings (`SELECT`, GraphQL-like bodies, JSON filters,
|
|
205
|
+
search expressions), executable-like strings (shell fragments, command
|
|
206
|
+
substitutions, shebangs, PowerShell, SQL/NoSQL mutation verbs), and
|
|
207
|
+
instruction-like text asking agents to ignore policy or reveal secrets.
|
|
208
|
+
4. Classify each segment as data, instruction, tool input, tool output,
|
|
209
|
+
evidence, provider response, or unknown. Remote text is data by default;
|
|
210
|
+
only trusted system-authored templates may become instruction segments.
|
|
211
|
+
5. Redact restricted values before persistence, provider calls, logs, telemetry,
|
|
212
|
+
and evidence summaries. Quarantine segments when redaction confidence is
|
|
213
|
+
low, executable intent appears in a data segment, or the destination sink
|
|
214
|
+
cannot safely encode it.
|
|
215
|
+
6. Encode for the exact sink immediately before use: argument arrays for
|
|
216
|
+
commands, canonicalized `https://` URLs for fetches, JSON string escaping
|
|
217
|
+
for packets, Markdown escaping for handoffs, `textContent`/HTML escaping for
|
|
218
|
+
UI, and provider-message wrapping that labels untrusted text as data.
|
|
219
|
+
|
|
220
|
+
Policy decisions should be append-only evidence inputs with request id, task id,
|
|
221
|
+
actor, action, resource summary, decision (`allow`, `deny`, `requiresApproval`,
|
|
222
|
+
`quarantine`), matched rule ids, redaction status, and sanitized reasons. They
|
|
223
|
+
must not include raw secrets, full prompt bodies, bearer headers, or internal
|
|
224
|
+
stack traces.
|
|
225
|
+
|
|
226
|
+
### Local CLI
|
|
227
|
+
|
|
228
|
+
- Default to local-only operation; network calls require an explicit command,
|
|
229
|
+
configured adapter, or CI-owned workflow.
|
|
230
|
+
- Keep `.agent-workflow/` as the auditable source of task, decision, evidence,
|
|
231
|
+
review, and release state.
|
|
232
|
+
- Validate workspace roots before writes and reject unsafe roots without
|
|
233
|
+
explicit confirmation.
|
|
234
|
+
- Use typed command contracts and JSON schemas for automation surfaces.
|
|
235
|
+
- Never log secret values, bearer headers, raw provider errors, or raw stack
|
|
236
|
+
traces in user-facing output.
|
|
237
|
+
- Preserve dry-run or evaluate modes for commands that alter config, tokens,
|
|
238
|
+
runtime adapters, generated files, or tracker state.
|
|
239
|
+
|
|
240
|
+
### Future SaaS API And Web Console
|
|
241
|
+
|
|
242
|
+
- Require tenant-authenticated sessions for every SaaS API request.
|
|
243
|
+
- Enforce authorization server-side; UI role visibility is not authorization.
|
|
244
|
+
- Bind every job, artifact, cache entry, evidence event, and storage object to a
|
|
245
|
+
tenant and workspace.
|
|
246
|
+
- Validate request bodies with narrow schemas and reject unknown mutation fields.
|
|
247
|
+
- Use short-lived worker credentials and scoped service identities.
|
|
248
|
+
- Store only sanitized workflow metadata unless the tenant explicitly enables
|
|
249
|
+
managed artifact storage.
|
|
250
|
+
- Apply tenant retention, deletion, export, and audit policies to every stored
|
|
251
|
+
artifact.
|
|
252
|
+
|
|
253
|
+
### Workers, Runtimes, And Providers
|
|
254
|
+
|
|
255
|
+
- Run workers with least privilege, no shared mutable workspace, and no default
|
|
256
|
+
access to tenant secrets.
|
|
257
|
+
- Require explicit provider opt-in before direct model API calls.
|
|
258
|
+
- Keep runtime-native delegation packets free of provider credentials and raw
|
|
259
|
+
secret material.
|
|
260
|
+
- Pass bounded, redacted context packets to model providers.
|
|
261
|
+
- Enforce allowed commands, ownership paths, and lifecycle recording for child
|
|
262
|
+
runtime work.
|
|
263
|
+
- Treat model output as suggestions until validated by code review, tests, and
|
|
264
|
+
role gates.
|
|
265
|
+
|
|
266
|
+
### Tools, MCP, And External Integrations
|
|
267
|
+
|
|
268
|
+
- Require `https://` for remote MCP and integration endpoints.
|
|
269
|
+
- Store OAuth and integration tokens only in tenant secret stores or approved
|
|
270
|
+
local secret paths; never in prompt, evidence, or generated runtime files.
|
|
271
|
+
- Pin sensitive executable discovery to trusted paths and reject tools resolved
|
|
272
|
+
from user-writable PATH entries.
|
|
273
|
+
- Redact tool results before persistence or model reuse.
|
|
274
|
+
- Verify webhook signatures and replay windows before accepting remote events.
|
|
275
|
+
- Keep scanner and tracker adapters narrow: one adapter owns I/O, policy checks,
|
|
276
|
+
retries, and sanitized errors for each integration.
|
|
277
|
+
|
|
278
|
+
### Evidence Integrity
|
|
279
|
+
|
|
280
|
+
- Record command evidence with command name, exit status, summary, and relevant
|
|
281
|
+
artifact paths, not raw secrets or full logs by default.
|
|
282
|
+
- Use append-only event records for workflow lifecycle, runtime spawn state,
|
|
283
|
+
reviews, and evidence.
|
|
284
|
+
- Hash large evidence artifacts and generated reports when they become release
|
|
285
|
+
inputs.
|
|
286
|
+
- Require QA and Architect review when evidence does not map to acceptance
|
|
287
|
+
criteria or when technical contracts changed.
|
|
288
|
+
- Preserve failed evidence and unresolved risk instead of overwriting it with a
|
|
289
|
+
later passing summary.
|
|
290
|
+
|
|
291
|
+
## Role Gates
|
|
292
|
+
|
|
293
|
+
- Product readiness: Product Owner and Analyst block when acceptance criteria,
|
|
294
|
+
non-goals, priority, or tenant impact are missing.
|
|
295
|
+
- Architecture readiness: Architect and Security block when boundaries, data
|
|
296
|
+
flow, provider policy, storage ownership, or failure modes are unclear.
|
|
297
|
+
- Security review: Security and Compliance/Privacy block sensitive work when
|
|
298
|
+
auth, secrets, PII, file paths, shell execution, network calls, dependencies,
|
|
299
|
+
TLS, cookies, sessions, CORS, webhooks, tenant isolation, or infrastructure
|
|
300
|
+
are touched without controls.
|
|
301
|
+
- Implementation handoff: Developer and Tech Lead block when tests, typed
|
|
302
|
+
contracts, ownership paths, or migration/rollback notes are missing.
|
|
303
|
+
- QA evidence: QA and Analyst block when evidence does not prove acceptance
|
|
304
|
+
criteria, edge cases, regression areas, or security controls.
|
|
305
|
+
- Operational readiness: SRE, DevOps, and Release Manager block when
|
|
306
|
+
monitoring, alerting, rate limits, budgets, rollout, rollback, or incident
|
|
307
|
+
owner is missing for SaaS behavior.
|
|
308
|
+
- Data readiness: DBA and Data Engineer/Analyst block when indexes, migrations,
|
|
309
|
+
retention, lineage, or tenant query patterns are not defined.
|
|
310
|
+
- Release go/no-go: Product Owner, Release Manager, and Security block when
|
|
311
|
+
residual risk remains unresolved and is not explicitly risk-accepted.
|
|
312
|
+
|
|
313
|
+
Security-sensitive tasks must include a threat model note, impacted boundaries,
|
|
314
|
+
controls, validation evidence, residual risks, and a reviewer outcome before
|
|
315
|
+
release.
|
|
316
|
+
|
|
317
|
+
## Data Classification
|
|
318
|
+
|
|
319
|
+
- Public: published docs and public command manifests. These may be indexed and
|
|
320
|
+
sent to providers when policy allows.
|
|
321
|
+
- Internal: workflow metadata, task summaries, and sanitized evidence. These are
|
|
322
|
+
tenant/workspace scoped and redacted before external provider use unless
|
|
323
|
+
policy allows broader handling.
|
|
324
|
+
- Confidential: private repo content, issue context, generated handoffs, and
|
|
325
|
+
logs. These are local-only or redacted-external by default; retention and
|
|
326
|
+
audit are required.
|
|
327
|
+
- Restricted: secrets, tokens, credentials, regulated PII, and signing material.
|
|
328
|
+
These are never sent to prompts or persisted in evidence; use a secret
|
|
329
|
+
manager, tokenization, or approved local secure files.
|
|
330
|
+
|
|
331
|
+
## Backlog Candidates
|
|
332
|
+
|
|
333
|
+
1. Policy engine for tenant data classification, provider routing, network
|
|
334
|
+
access, tool capabilities, and fail-open/fail-closed behavior.
|
|
335
|
+
2. Prompt-injection scanner for issues, comments, artifacts, tool outputs,
|
|
336
|
+
evidence, model responses, and context packs.
|
|
337
|
+
3. Tenant isolation test suite covering SaaS API, workers, queues, caches,
|
|
338
|
+
evidence, object storage, and backup restore paths.
|
|
339
|
+
4. Evidence integrity ledger with append-only events, artifact hashing,
|
|
340
|
+
reviewer attestations, and tamper detection.
|
|
341
|
+
5. SSRF and URL validation library shared by SaaS workers, web console, MCP
|
|
342
|
+
proxy, and tracker adapters.
|
|
343
|
+
6. Tool identity registry for MCP servers, local binaries, runtime adapters,
|
|
344
|
+
allowed commands, versions, and trusted executable paths.
|
|
345
|
+
7. Secret redaction pipeline for runtime packets, provider errors, evidence,
|
|
346
|
+
logs, telemetry, imported artifacts, and generated summaries.
|
|
347
|
+
8. SaaS audit log schema with tenant id, actor, action, target, policy decision,
|
|
348
|
+
evidence id, request id, and redaction status.
|
|
349
|
+
9. Worker sandbox profile with filesystem, network, process, timeout, memory,
|
|
350
|
+
and budget limits.
|
|
351
|
+
10. Release gate automation that blocks security-sensitive SaaS changes without
|
|
352
|
+
Security, QA, SRE, and Compliance/Privacy evidence.
|
|
353
|
+
11. Tenant retention and deletion workflows with export, legal hold, backup
|
|
354
|
+
tombstone, and restore verification.
|
|
355
|
+
12. Dependency and binary provenance checks for scanner tools, MCP proxies,
|
|
356
|
+
release automation, and runtime bridge helpers.
|
|
357
|
+
|
|
358
|
+
## Validation Expectations
|
|
359
|
+
|
|
360
|
+
- Documentation-only changes should run lightweight text checks and the
|
|
361
|
+
Orchestra evidence/review workflow.
|
|
362
|
+
- Security-sensitive code changes should run format, lint, typecheck, unit
|
|
363
|
+
tests, secret scan, security audit, and targeted E2E or contract tests.
|
|
364
|
+
- SaaS implementation stories should add tests for tenant isolation, prompt
|
|
365
|
+
injection handling, URL validation, path traversal, unsafe writes, command
|
|
366
|
+
execution, secret redaction, and evidence tampering.
|
|
367
|
+
- Release evidence must name the acceptance criteria it proves or explicitly
|
|
368
|
+
record the deferred owner and rationale.
|
package/docs/site-manifest.json
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"repositoryUrl": "https://github.com/jterrats/open-orchestra",
|
|
3
3
|
"packageUrl": "https://www.npmjs.com/package/@jterrats/open-orchestra",
|
|
4
|
-
"nav": [
|
|
5
|
-
{ "href": "https://jterrats.dev", "label": "Main site" }
|
|
6
|
-
],
|
|
4
|
+
"nav": [{ "href": "https://jterrats.dev", "label": "Main site" }],
|
|
7
5
|
"pages": [
|
|
8
6
|
{
|
|
9
7
|
"path": "/",
|
|
@@ -54,7 +52,7 @@
|
|
|
54
52
|
},
|
|
55
53
|
"quickstart": {
|
|
56
54
|
"source": "README.md",
|
|
57
|
-
"heading": "First
|
|
55
|
+
"heading": "Individual Mode: First Value In Minutes"
|
|
58
56
|
},
|
|
59
57
|
"capabilities": {
|
|
60
58
|
"source": "README.md",
|
|
@@ -92,7 +90,7 @@
|
|
|
92
90
|
"label": "README",
|
|
93
91
|
"href": "https://github.com/jterrats/open-orchestra#quick-start",
|
|
94
92
|
"source": "README.md",
|
|
95
|
-
"heading": "First
|
|
93
|
+
"heading": "Individual Mode: First Value In Minutes"
|
|
96
94
|
},
|
|
97
95
|
{
|
|
98
96
|
"title": "Release matrix",
|
|
@@ -110,43 +108,143 @@
|
|
|
110
108
|
},
|
|
111
109
|
"docs": {
|
|
112
110
|
"links": [
|
|
113
|
-
{
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
{
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
111
|
+
{
|
|
112
|
+
"title": "Adoption guide",
|
|
113
|
+
"source": "docs/adoption-guide.md",
|
|
114
|
+
"heading": "Open Orchestra 1.0.0 Adoption Guide"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"title": "Core command surface",
|
|
118
|
+
"source": "docs/core-command-surface.md",
|
|
119
|
+
"heading": "Core Command Surface"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"title": "E2E test batteries",
|
|
123
|
+
"source": "docs/e2e-test-batteries.md",
|
|
124
|
+
"heading": "End-to-End Test Batteries"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"title": "Duplicate-code enforcement",
|
|
128
|
+
"source": "docs/duplicate-code-enforcement.md",
|
|
129
|
+
"heading": "Duplicate-Code Enforcement"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"title": "Sonar quality gates",
|
|
133
|
+
"source": "docs/sonar-quality-gates.md",
|
|
134
|
+
"heading": "Sonar Quality Gates"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"title": "Sonar architecture model",
|
|
138
|
+
"source": "docs/sonar-architecture-model.md",
|
|
139
|
+
"heading": "Sonar Architecture Model"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"title": "Runtime adapters",
|
|
143
|
+
"source": "docs/runtime-adapters.md",
|
|
144
|
+
"heading": "Runtime Adapters"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"title": "Context vault",
|
|
148
|
+
"source": "docs/context-vault.md",
|
|
149
|
+
"heading": "Context Vault"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"title": "Site content workflow",
|
|
153
|
+
"source": "docs/site-content-workflow.md",
|
|
154
|
+
"heading": "Public Site Content Workflow"
|
|
155
|
+
}
|
|
122
156
|
]
|
|
123
157
|
},
|
|
124
158
|
"releaseDocs": {
|
|
125
159
|
"links": [
|
|
126
|
-
{
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
{
|
|
132
|
-
|
|
160
|
+
{
|
|
161
|
+
"title": "Release test matrix",
|
|
162
|
+
"source": "docs/release-test-matrix.md",
|
|
163
|
+
"heading": "1.0.0 Release Test Matrix"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"title": "E2E test batteries",
|
|
167
|
+
"source": "docs/e2e-test-batteries.md",
|
|
168
|
+
"heading": "End-to-End Test Batteries"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"title": "Sonar quality gates",
|
|
172
|
+
"source": "docs/sonar-quality-gates.md",
|
|
173
|
+
"heading": "Sonar Quality Gates"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"title": "Sonar architecture model",
|
|
177
|
+
"source": "docs/sonar-architecture-model.md",
|
|
178
|
+
"heading": "Sonar Architecture Model"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"title": "QA evidence",
|
|
182
|
+
"source": "docs/site-content-workflow.md",
|
|
183
|
+
"heading": "QA Evidence"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"title": "Package naming",
|
|
187
|
+
"source": "docs/package-naming.md",
|
|
188
|
+
"heading": "Package Naming Decision"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"title": "Upgrade dogfooding",
|
|
192
|
+
"source": "README.md",
|
|
193
|
+
"heading": "Quick Start"
|
|
194
|
+
}
|
|
133
195
|
]
|
|
134
196
|
},
|
|
135
197
|
"console": {
|
|
136
198
|
"links": [
|
|
137
|
-
{
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
199
|
+
{
|
|
200
|
+
"title": "Web console QA",
|
|
201
|
+
"source": "docs/web-console-qa.md",
|
|
202
|
+
"heading": "Web Console QA Notes"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"title": "Local web console",
|
|
206
|
+
"source": "docs/orchestra-mvp.md",
|
|
207
|
+
"heading": "Commands"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"title": "Workflow progress API",
|
|
211
|
+
"source": "README.md",
|
|
212
|
+
"heading": "1.0.0 Workflow Tooling"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"title": "Delivery dashboard",
|
|
216
|
+
"source": "docs/adoption-guide.md",
|
|
217
|
+
"heading": "Release Operations"
|
|
218
|
+
}
|
|
141
219
|
]
|
|
142
220
|
},
|
|
143
221
|
"reference": {
|
|
144
222
|
"links": [
|
|
145
|
-
{
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
223
|
+
{
|
|
224
|
+
"title": "Command contracts",
|
|
225
|
+
"source": "docs/command-contracts.md",
|
|
226
|
+
"heading": "Command Contracts"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"title": "Generated artifact APIs",
|
|
230
|
+
"source": "docs/generated-artifact-api-catalog.md",
|
|
231
|
+
"heading": "Generated Artifact API Catalog"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"title": "Runtime LLM flow",
|
|
235
|
+
"source": "docs/runtime-llm-flow.md",
|
|
236
|
+
"heading": "Runtime LLM Flow"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"title": "Tracker adapter contract",
|
|
240
|
+
"source": "docs/tracker-adapter-contract.md",
|
|
241
|
+
"heading": "Tracker Adapter Contract"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"title": "Source of truth and learning",
|
|
245
|
+
"source": "docs/source-of-truth-and-agent-learning.md",
|
|
246
|
+
"heading": "Source of Truth and Agent Learning"
|
|
247
|
+
}
|
|
150
248
|
]
|
|
151
249
|
}
|
|
152
250
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jterrats/open-orchestra",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.18",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
"extensions/vscode-open-orchestra",
|
|
@@ -31,7 +31,9 @@
|
|
|
31
31
|
"release:matrix": "node scripts/release-test-matrix.js",
|
|
32
32
|
"performance:bench": "npm run build && node scripts/performance-benchmark.js",
|
|
33
33
|
"precommit": "npm run lint && npm run typecheck && npm run secret-scan && npm run security:audit && npm test && npm run validate:workflow",
|
|
34
|
-
"
|
|
34
|
+
"package:build": "npm run build && npm run site:build",
|
|
35
|
+
"package:validate": "node scripts/validate-package-contents.js",
|
|
36
|
+
"prepack": "npm run package:build && npm run package:validate",
|
|
35
37
|
"sonar:preflight:local": "node bin/orchestra.js sonar preflight --provider sonarqube-local --project-key jterrats_open-orchestra --host-url ${SONAR_HOST_URL:-http://localhost:9001}",
|
|
36
38
|
"sonar:scan:local": "sonar-scanner -Dsonar.host.url=${SONAR_HOST_URL:-http://localhost:9001}",
|
|
37
39
|
"hooks:install": "git config core.hooksPath .githooks",
|
|
@@ -71,6 +73,7 @@
|
|
|
71
73
|
"files": [
|
|
72
74
|
"bin/",
|
|
73
75
|
"dist/",
|
|
76
|
+
"site/dist/",
|
|
74
77
|
"rules/",
|
|
75
78
|
"docs/",
|
|
76
79
|
"skills/",
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Content-Security-Policy: default-src 'self'; base-uri 'self'; connect-src 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data:; object-src 'none'; script-src 'self'; style-src 'self'; form-action 'self'; upgrade-insecure-requests
|
|
3
|
+
Permissions-Policy: camera=(), geolocation=(), microphone=(), payment=(), usb=()
|
|
4
|
+
Referrer-Policy: strict-origin-when-cross-origin
|
|
5
|
+
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
|
|
6
|
+
X-Content-Type-Options: nosniff
|
|
7
|
+
|
|
8
|
+
/architecture.mmd
|
|
9
|
+
Content-Type: text/plain; charset=utf-8
|