@jterrats/open-orchestra 0.5.0 → 0.5.2

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.
Files changed (72) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +31 -2
  3. package/dist/cli.js +10 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/command-manifest.js +5 -2
  6. package/dist/command-manifest.js.map +1 -1
  7. package/dist/commands.d.ts +2 -2
  8. package/dist/commands.js +8 -3
  9. package/dist/commands.js.map +1 -1
  10. package/dist/context-budget.js +14 -0
  11. package/dist/context-budget.js.map +1 -1
  12. package/dist/gemini-provider.d.ts +12 -0
  13. package/dist/gemini-provider.js +132 -0
  14. package/dist/gemini-provider.js.map +1 -0
  15. package/dist/lesson-assist.d.ts +19 -0
  16. package/dist/lesson-assist.js +70 -0
  17. package/dist/lesson-assist.js.map +1 -0
  18. package/dist/memory-status.d.ts +22 -0
  19. package/dist/memory-status.js +139 -0
  20. package/dist/memory-status.js.map +1 -0
  21. package/dist/model-providers.d.ts +2 -0
  22. package/dist/model-providers.js +8 -0
  23. package/dist/model-providers.js.map +1 -1
  24. package/dist/ollama-provider.d.ts +12 -0
  25. package/dist/ollama-provider.js +86 -0
  26. package/dist/ollama-provider.js.map +1 -0
  27. package/dist/planning-commands.d.ts +1 -0
  28. package/dist/planning-commands.js +9 -0
  29. package/dist/planning-commands.js.map +1 -1
  30. package/dist/project-detection.js +13 -1
  31. package/dist/project-detection.js.map +1 -1
  32. package/dist/prompt-registry-classifier.d.ts +3 -0
  33. package/dist/prompt-registry-classifier.js +83 -0
  34. package/dist/prompt-registry-classifier.js.map +1 -0
  35. package/dist/prompt-registry-update.d.ts +21 -0
  36. package/dist/prompt-registry-update.js +128 -0
  37. package/dist/prompt-registry-update.js.map +1 -0
  38. package/dist/prompt-registry-validation.d.ts +12 -0
  39. package/dist/prompt-registry-validation.js +104 -0
  40. package/dist/prompt-registry-validation.js.map +1 -0
  41. package/dist/prompt-registry.d.ts +1 -0
  42. package/dist/prompt-registry.js +2 -2
  43. package/dist/prompt-registry.js.map +1 -1
  44. package/dist/runtime-execution-adapters.js +16 -0
  45. package/dist/runtime-execution-adapters.js.map +1 -1
  46. package/dist/skills-catalog.js +57 -0
  47. package/dist/skills-catalog.js.map +1 -1
  48. package/dist/skills-commands.d.ts +2 -0
  49. package/dist/skills-commands.js +45 -1
  50. package/dist/skills-commands.js.map +1 -1
  51. package/dist/skills-memory.d.ts +6 -0
  52. package/dist/skills-memory.js +16 -0
  53. package/dist/skills-memory.js.map +1 -1
  54. package/dist/skills.d.ts +1 -1
  55. package/dist/skills.js +1 -1
  56. package/dist/skills.js.map +1 -1
  57. package/dist/types/runtime.d.ts +1 -1
  58. package/dist/workspace-artifacts.d.ts +6 -0
  59. package/dist/workspace-artifacts.js +31 -0
  60. package/dist/workspace-artifacts.js.map +1 -0
  61. package/dist/workspace-validator.d.ts +4 -1
  62. package/dist/workspace-validator.js +8 -20
  63. package/dist/workspace-validator.js.map +1 -1
  64. package/docs/architecture.md +69 -2
  65. package/docs/core-command-surface.md +71 -0
  66. package/docs/end-to-end-demo.md +87 -0
  67. package/docs/runtime-llm-flow.md +18 -4
  68. package/docs/skill-loading-strategy.md +1 -0
  69. package/docs/tracker-adapter-contract.md +66 -0
  70. package/package.json +10 -5
  71. package/skills/doc-sync/SKILL.md +40 -0
  72. package/skills/doc-sync/manifest.json +58 -0
@@ -0,0 +1,87 @@
1
+ # Reproducible End-to-End Demo
2
+
3
+ This demo uses only local workflow state and the built-in fake provider path. It
4
+ does not require OpenAI, Anthropic, GitHub, or tracker credentials.
5
+
6
+ Run it in a disposable directory:
7
+
8
+ ```bash
9
+ mkdir open-orchestra-demo
10
+ cd open-orchestra-demo
11
+ npm install -g @jterrats/open-orchestra
12
+ orchestra init --confirm-unknown
13
+ orchestra health --json
14
+ ```
15
+
16
+ In a disposable empty directory, `health` may report a workspace-classification
17
+ warning while still reporting workflow readiness as passed. Real project
18
+ directories should have project signals such as a package manager or source tree.
19
+
20
+ ## 1. Create a Governed Task
21
+
22
+ ```bash
23
+ orchestra task add \
24
+ --id DEMO-001 \
25
+ --title "Ship a governed README update" \
26
+ --owner product_owner \
27
+ --paths "README.md"
28
+
29
+ orchestra estimate \
30
+ --task DEMO-001 \
31
+ --sizing s \
32
+ --solo-days 1 \
33
+ --ai-unguided-days 0.5 \
34
+ --confidence medium
35
+ ```
36
+
37
+ ## 2. Satisfy the Architect Sizing Gate
38
+
39
+ The autonomous workflow always requires architect sizing before developer work.
40
+
41
+ ```bash
42
+ orchestra decision add \
43
+ --task DEMO-001 \
44
+ --owner architect \
45
+ --title "Story sizing" \
46
+ --decision "s 2 points" \
47
+ --context "Local fake-provider demo" \
48
+ --consequences "Developer phase can start"
49
+ ```
50
+
51
+ ## 3. Run the Workflow
52
+
53
+ ```bash
54
+ orchestra workflow run --task DEMO-001 --gates none
55
+ orchestra workflow runs --json
56
+ ```
57
+
58
+ Expected result: the run creates PM, PO, architect, developer, QA, and release
59
+ phase records in `.agent-workflow/` and completes without provider API keys.
60
+
61
+ ## 4. Attach Evidence and Review
62
+
63
+ ```bash
64
+ orchestra evidence add \
65
+ --task DEMO-001 \
66
+ --role developer \
67
+ --type command \
68
+ --summary "Demo workflow completed with fake provider"
69
+
70
+ orchestra review \
71
+ --task DEMO-001 \
72
+ --role qa \
73
+ --result approve \
74
+ --findings "Demo artifacts are present and workflow completed" \
75
+ --recommendation "Use this path for local onboarding"
76
+ ```
77
+
78
+ ## 5. Inspect Release Readiness
79
+
80
+ ```bash
81
+ orchestra release candidate --version 0.0.0-demo --dry-run --json
82
+ orchestra benchmark --task DEMO-001
83
+ orchestra summary --json
84
+ ```
85
+
86
+ The demo is complete when the workflow run is done, evidence and QA review exist,
87
+ and the release candidate dry run reports the remaining gaps explicitly.
@@ -92,15 +92,17 @@ workflow execution only when the workflow config has approved routing.
92
92
  Model routing controls which provider/model each role uses during autonomous
93
93
  workflow phases. The default `none` provider keeps the deterministic workflow
94
94
  behavior. Configure a role or default route to `fake` for local structured
95
- execution tests, or to `openai` to use the OpenAI Responses API through the
96
- native provider adapter. Use `anthropic` to route phases to Claude models
97
- through the Anthropic Messages API.
95
+ execution tests, `openai` for the OpenAI Responses API, `anthropic` for the
96
+ Anthropic Messages API, `gemini` for the Gemini `generateContent` API, or
97
+ `ollama` for a local OpenAI-compatible Ollama endpoint.
98
98
 
99
99
  ```bash
100
100
  orchestra model providers --json
101
101
  orchestra model set-role --role qa --provider fake --model fake-model
102
102
  OPENAI_API_KEY=... orchestra model set-role --role architect --provider openai --model gpt-5.2
103
103
  ANTHROPIC_API_KEY=... orchestra model set-role --role qa --provider anthropic --model claude-sonnet-4-20250514
104
+ GEMINI_API_KEY=... orchestra model set-role --role product_manager --provider gemini --model gemini-2.5-pro
105
+ orchestra model set-role --role developer --provider ollama --model llama3.2
104
106
  orchestra model provenance list --json
105
107
  orchestra budget check --json
106
108
  orchestra workflow run --task STORY-001 --gates phase
@@ -117,12 +119,23 @@ optionally `ANTHROPIC_BASE_URL` for an HTTPS-compatible endpoint. It uses
117
119
  Claude Messages API responses are normalized through text content rather than
118
120
  OpenAI-style JSON schema response formatting.
119
121
 
122
+ The Gemini adapter reads `GEMINI_API_KEY` or `GOOGLE_API_KEY` from the
123
+ environment. For local secret files, set `GEMINI_API_KEY_FILE` or
124
+ `GOOGLE_API_KEY_FILE` to an absolute path containing only the key value. The
125
+ adapter also reads optional `GEMINI_BASE_URL`; the base URL must be HTTPS and
126
+ defaults to `https://generativelanguage.googleapis.com`.
127
+
128
+ The Ollama adapter defaults to `http://localhost:11434/v1` and uses the
129
+ OpenAI-compatible `/chat/completions` endpoint. Set `OLLAMA_BASE_URL` for a
130
+ custom local or remote endpoint and `OLLAMA_API_KEY` when the endpoint requires
131
+ one.
132
+
120
133
  ## Runtime Execution
121
134
 
122
135
  Runtime execution is separate from model provider routing. `ModelProvider`
123
136
  adapters call vendor APIs directly and therefore require provider API keys.
124
137
  Runtime execution adapters prepare work for an already-authenticated runtime
125
- such as Claude CLI, Codex CLI, Cursor, VS Code, or Windsurf.
138
+ such as Claude CLI, Codex CLI, OpenCode CLI, Cursor, VS Code, or Windsurf.
126
139
 
127
140
  Use runtime execution when the user wants the active CLI/IDE agent to perform
128
141
  the work and does not want Orchestra to call OpenAI, Anthropic, or another
@@ -131,6 +144,7 @@ vendor API directly:
131
144
  ```bash
132
145
  orchestra runtime adapters --json
133
146
  orchestra runtime brief --task STORY-001 --runtime claude-cli
147
+ orchestra runtime brief --task STORY-001 --runtime opencode-cli
134
148
  orchestra runtime delegate-plan --task STORY-001 --runtime claude-cli --roles architect,developer,qa
135
149
  orchestra runtime handoff --task STORY-001 --runtime claude-cli --artifact .agent-workflow/runs/STORY-001-runtime-claude-cli-delegation.md
136
150
  ```
@@ -61,6 +61,7 @@ Skill manifests should be able to declare `sourceGroups` so the orchestrator can
61
61
  - `pr-review`: produce review findings, PR summary, risks, rollout notes, and missing-test gaps.
62
62
  - `playwright-evidence`: plan browser automation and attach screenshots, traces, videos, and reports.
63
63
  - `backlog-sync`: keep GitHub issues, local stories, and workflow tasks aligned.
64
+ - `doc-sync`: keep architecture docs, changelog, onboarding, runbooks, site copy, and prompt registers aligned with delivered changes.
64
65
  - `release-readiness`: validate gates, rollback, observability, support, and customer-impact evidence.
65
66
  - `model-evaluation`: run prompt/model/provider-routing evaluations and compare outputs.
66
67
  - `source-of-truth`: select authoritative project, vendor, and workflow sources before acting.
@@ -0,0 +1,66 @@
1
+ # Tracker Adapter Contract
2
+
3
+ Open Orchestra currently ships a GitHub-oriented tracker command:
4
+
5
+ ```bash
6
+ orchestra github sync --issue <number> --task <id> --comment --json
7
+ ```
8
+
9
+ The product contract is broader than GitHub CLI. A runtime may use `gh` when it
10
+ is installed and authenticated, or fall back to an MCP-backed tracker skill when
11
+ the user works in GitHub, Jira, Bitbucket, GitLab, Azure DevOps, Linear, or a
12
+ custom issue system.
13
+
14
+ ## Resolution Order
15
+
16
+ 1. Use the native CLI transport when the workspace explicitly targets it and the
17
+ CLI is installed, authenticated, and authorized for the repository.
18
+ 2. Use `--transport mcp-skill` when the native CLI is unavailable or the runtime
19
+ exposes tracker tools through MCP.
20
+ 3. If neither transport is available, keep the local task and record a review
21
+ finding that tracker sync is pending instead of inventing remote state.
22
+
23
+ ## Common Adapter Shape
24
+
25
+ Every tracker adapter should provide the same normalized fields to Open
26
+ Orchestra:
27
+
28
+ | Field | Meaning |
29
+ | --- | --- |
30
+ | `tracker` | Provider name such as `github`, `jira`, `gitlab`, `bitbucket`, or `custom`. |
31
+ | `remoteId` | Provider issue key or number. |
32
+ | `url` | Canonical issue URL. |
33
+ | `title` | Issue title. |
34
+ | `body` | Issue body or description. |
35
+ | `state` | Provider state normalized to `open`, `in_progress`, `blocked`, or `done` when possible. |
36
+ | `labels` | Provider tags, labels, components, or issue types. |
37
+ | `assignees` | User handles or display names. |
38
+ | `acceptanceCriteria` | Explicit acceptance criteria extracted from the issue. |
39
+ | `updatedAt` | Provider last-updated timestamp. |
40
+
41
+ Writes should support comment, status update, close, and accepted-risk note when
42
+ the provider allows them. Missing write support should be reported as a transport
43
+ capability gap, not treated as successful sync.
44
+
45
+ ## MCP Fallback Requirements
46
+
47
+ MCP tracker tools must:
48
+
49
+ - Use HTTPS endpoints and the repository's approved auth flow.
50
+ - Avoid storing raw tokens in workflow artifacts, logs, or prompt registries.
51
+ - Return structured data that can be mapped to the common adapter shape.
52
+ - Make write operations explicit: comment, status transition, close, reopen, and
53
+ accepted-risk note are separate capabilities.
54
+ - Record which transport handled the sync in evidence or event metadata.
55
+
56
+ ## GitHub Compatibility
57
+
58
+ The GitHub command remains the first-class implementation:
59
+
60
+ ```bash
61
+ orchestra github sync --issue 180 --task OO-176 --owner technical_writer --comment --json
62
+ orchestra github sync --issue 180 --task OO-176 --transport mcp-skill --dry-run --json
63
+ ```
64
+
65
+ Use the MCP form for environments where `gh` is not installed but the active
66
+ runtime has a GitHub MCP server with issue read/write tools.
package/package.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "@jterrats/open-orchestra",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "type": "module",
5
+ "workspaces": [
6
+ "site"
7
+ ],
5
8
  "bin": {
6
9
  "orchestra": "bin/orchestra.js"
7
10
  },
@@ -9,16 +12,18 @@
9
12
  "build": "tsc && npm run build:web",
10
13
  "typecheck": "tsc --noEmit",
11
14
  "test": "npm run build && node --test test/**/*.js extensions/**/*.test.cjs",
12
- "test:e2e": "npm run build && playwright test",
15
+ "test:e2e": "npm run build && npm run site:build && playwright test",
13
16
  "test:e2e:init": "node --test e2e/init-onboarding.test.js",
14
- "lint": "eslint . && prettier --check \"{bin,e2e,scripts,test,src}/**/*.js\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
15
- "format": "prettier --write \"{bin,e2e,scripts,test,src}/**/*.js\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
17
+ "lint": "eslint . && prettier --check \"{bin,e2e,scripts,test,src}/**/*.js\" \"site/src/**/*.{css,js,jsx}\" \"site/*.{html,js,json}\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
18
+ "format": "prettier --write \"{bin,e2e,scripts,test,src}/**/*.js\" \"site/src/**/*.{css,js,jsx}\" \"site/*.{html,js,json}\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
16
19
  "secret-scan": "node scripts/secret-scan.js",
17
20
  "validate:workflow": "node scripts/validate-workflow.js",
18
21
  "precommit": "npm run lint && npm run typecheck && npm run secret-scan && npm test && npm run validate:workflow",
19
22
  "prepack": "npm run build",
20
23
  "hooks:install": "git config core.hooksPath .githooks",
21
- "build:web": "esbuild src/web-console-client.js --bundle --format=esm --platform=browser --target=es2022 --outfile=dist/assets/web-console.js"
24
+ "build:web": "esbuild src/web-console-client.js --bundle --format=esm --platform=browser --target=es2022 --outfile=dist/assets/web-console.js",
25
+ "site:build": "npm --workspace @jterrats/open-orchestra-site run build",
26
+ "site:dev": "npm --workspace @jterrats/open-orchestra-site run dev -- --host 127.0.0.1"
22
27
  },
23
28
  "engines": {
24
29
  "node": ">=22"
@@ -0,0 +1,40 @@
1
+ # Doc Sync
2
+
3
+ Keep architecture docs, changelog, onboarding, runbooks, site copy, and prompt registers aligned with delivered changes.
4
+
5
+ ## When To Load
6
+
7
+ - Trigger: `documentation`
8
+ - Trigger: `docs`
9
+ - Trigger: `changelog`
10
+ - Trigger: `readme`
11
+ - Trigger: `quickstart`
12
+ - Trigger: `runbook`
13
+ - Trigger: `architecture`
14
+ - Trigger: `adr`
15
+ - Trigger: `release notes`
16
+ - Trigger: `public site`
17
+ - Trigger: `prompt registry`
18
+
19
+ ## Procedure
20
+
21
+ - Identify changed behavior, architecture, release surface, workflows, commands, and user-facing copy from the task, issue, diff, and evidence.
22
+ - Update the smallest authoritative documentation surfaces for the audience: README for onboarding, CHANGELOG for release history, `docs/` for architecture and runbooks, `.generated-prompts/` for prompt intent, and the public site for product-facing guidance.
23
+ - Keep code, service, and domain generation prompts traceable: update `.generated-prompts/code.md` or `.generated-prompts/services.md` after substantial class, model, service, controller, or module changes.
24
+ - Keep documentation and diagram prompts traceable: update `.generated-prompts/docs.md` or `.generated-prompts/diagrams.md` after substantial docs, architecture, ADR, runbook, changelog, or Mermaid changes.
25
+ - Validate command examples against `orchestra commands manifest --json`, `orchestra --help`, or the repo-local `node bin/orchestra.js` during Open Orchestra development.
26
+ - If README, docs, or site onboarding changes, check the sibling surfaces so quickstart language, command names, and release positioning do not drift.
27
+ - Record unresolved documentation gaps as review findings or follow-up tasks instead of burying them in prose.
28
+
29
+ ## Surface Checklist
30
+
31
+ - Architecture changes: `docs/architecture.md`, ADRs, Mermaid diagrams, public site architecture section, `.generated-prompts/diagrams.md`.
32
+ - Release changes: `CHANGELOG.md`, release notes, rollback and observability notes, `.generated-prompts/docs.md`.
33
+ - CLI or workflow changes: `README.md`, command reference docs, public site quickstart, `.generated-prompts/code.md`.
34
+ - Product or support changes: public site, user guides, known issues, support FAQs, `.generated-prompts/docs.md`.
35
+
36
+ ## Evidence
37
+
38
+ - `file`
39
+ - `report`
40
+ - `command`
@@ -0,0 +1,58 @@
1
+ {
2
+ "id": "doc-sync",
3
+ "name": "Doc Sync",
4
+ "summary": "Keep architecture docs, changelog, onboarding, runbooks, site copy, and prompt registers aligned with delivered changes.",
5
+ "triggers": [
6
+ "doc-sync",
7
+ "documentation",
8
+ "docs",
9
+ "changelog",
10
+ "readme",
11
+ "quickstart",
12
+ "runbook",
13
+ "architecture",
14
+ "adr",
15
+ "release notes",
16
+ "public site",
17
+ "prompt registry"
18
+ ],
19
+ "roles": [
20
+ "technical_writer",
21
+ "release_manager",
22
+ "architect",
23
+ "product_manager",
24
+ "product_owner",
25
+ "platform_engineer",
26
+ "support_customer_ops",
27
+ "parent"
28
+ ],
29
+ "capabilities": [
30
+ "documentation-sync",
31
+ "release-notes",
32
+ "architecture-communication",
33
+ "onboarding",
34
+ "support-readiness"
35
+ ],
36
+ "riskAreas": [
37
+ "documentation",
38
+ "architecture",
39
+ "release",
40
+ "governance"
41
+ ],
42
+ "sourceGroups": [
43
+ "project-instructions",
44
+ "product-backlog",
45
+ "architecture",
46
+ "codebase",
47
+ "devops-runtime",
48
+ "quality-security",
49
+ "agent-memory"
50
+ ],
51
+ "evidence": [
52
+ "file",
53
+ "report",
54
+ "command"
55
+ ],
56
+ "loadBudget": "normal",
57
+ "entry": "skills/doc-sync/SKILL.md"
58
+ }