@jterrats/open-orchestra 0.5.1 → 0.5.3

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 (57) hide show
  1. package/dist/cli.js +10 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/command-manifest.js +4 -1
  4. package/dist/command-manifest.js.map +1 -1
  5. package/dist/commands.d.ts +2 -2
  6. package/dist/commands.js +8 -3
  7. package/dist/commands.js.map +1 -1
  8. package/dist/gemini-provider.d.ts +13 -0
  9. package/dist/gemini-provider.js +141 -0
  10. package/dist/gemini-provider.js.map +1 -0
  11. package/dist/lesson-assist.d.ts +19 -0
  12. package/dist/lesson-assist.js +70 -0
  13. package/dist/lesson-assist.js.map +1 -0
  14. package/dist/memory-status.d.ts +22 -0
  15. package/dist/memory-status.js +139 -0
  16. package/dist/memory-status.js.map +1 -0
  17. package/dist/model-providers.d.ts +2 -0
  18. package/dist/model-providers.js +8 -0
  19. package/dist/model-providers.js.map +1 -1
  20. package/dist/ollama-provider.d.ts +12 -0
  21. package/dist/ollama-provider.js +86 -0
  22. package/dist/ollama-provider.js.map +1 -0
  23. package/dist/planning-commands.d.ts +1 -0
  24. package/dist/planning-commands.js +9 -0
  25. package/dist/planning-commands.js.map +1 -1
  26. package/dist/prompt-registry-classifier.d.ts +3 -0
  27. package/dist/prompt-registry-classifier.js +83 -0
  28. package/dist/prompt-registry-classifier.js.map +1 -0
  29. package/dist/prompt-registry-update.d.ts +21 -0
  30. package/dist/prompt-registry-update.js +128 -0
  31. package/dist/prompt-registry-update.js.map +1 -0
  32. package/dist/prompt-registry-validation.d.ts +12 -0
  33. package/dist/prompt-registry-validation.js +104 -0
  34. package/dist/prompt-registry-validation.js.map +1 -0
  35. package/dist/prompt-registry.d.ts +1 -0
  36. package/dist/prompt-registry.js +2 -2
  37. package/dist/prompt-registry.js.map +1 -1
  38. package/dist/runtime-execution-adapters.js +16 -0
  39. package/dist/runtime-execution-adapters.js.map +1 -1
  40. package/dist/skills-commands.d.ts +2 -0
  41. package/dist/skills-commands.js +45 -1
  42. package/dist/skills-commands.js.map +1 -1
  43. package/dist/skills-memory.d.ts +6 -0
  44. package/dist/skills-memory.js +16 -0
  45. package/dist/skills-memory.js.map +1 -1
  46. package/dist/skills.d.ts +1 -1
  47. package/dist/skills.js +1 -1
  48. package/dist/skills.js.map +1 -1
  49. package/dist/types/runtime.d.ts +1 -1
  50. package/dist/workspace-artifacts.d.ts +6 -0
  51. package/dist/workspace-artifacts.js +31 -0
  52. package/dist/workspace-artifacts.js.map +1 -0
  53. package/dist/workspace-validator.d.ts +4 -1
  54. package/dist/workspace-validator.js +8 -20
  55. package/dist/workspace-validator.js.map +1 -1
  56. package/docs/runtime-llm-flow.md +18 -4
  57. package/package.json +1 -1
@@ -0,0 +1,31 @@
1
+ import path from "node:path";
2
+ import { FILES, WORKFLOW_DIR } from "./constants.js";
3
+ import { exists } from "./fs-utils.js";
4
+ import { PROMPT_REGISTRY_DIR } from "./prompt-registry.js";
5
+ export async function validateEventArtifacts(root, event, line) {
6
+ const issues = [];
7
+ for (const artifact of event.artifacts ?? []) {
8
+ if (!(await isValidArtifact(root, artifact))) {
9
+ issues.push({
10
+ artifact,
11
+ message: `events.jsonl:${line}: artifact does not exist: ${artifact}`,
12
+ });
13
+ }
14
+ }
15
+ return issues;
16
+ }
17
+ async function isValidArtifact(root, artifact) {
18
+ return (isAllowedArtifact(artifact) && (await exists(path.join(root, artifact))));
19
+ }
20
+ function isAllowedArtifact(artifact) {
21
+ return (artifact === WORKFLOW_DIR ||
22
+ artifact.startsWith(`${WORKFLOW_DIR}/`) ||
23
+ artifact === PROMPT_REGISTRY_DIR ||
24
+ artifact.startsWith(`${PROMPT_REGISTRY_DIR}/`) ||
25
+ artifact === "CHANGELOG.md" ||
26
+ artifact === "README.md" ||
27
+ artifact === "package.json" ||
28
+ artifact === FILES.config ||
29
+ artifact.startsWith("docs/"));
30
+ }
31
+ //# sourceMappingURL=workspace-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-artifacts.js","sourceRoot":"","sources":["../src/workspace-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,KAAiB,EACjB,IAAY;IAEZ,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ;gBACR,OAAO,EAAE,gBAAgB,IAAI,8BAA8B,QAAQ,EAAE;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,QAAgB;IAEhB,OAAO,CACL,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CACzE,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,OAAO,CACL,QAAQ,KAAK,YAAY;QACzB,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,CAAC;QACvC,QAAQ,KAAK,mBAAmB;QAChC,QAAQ,CAAC,UAAU,CAAC,GAAG,mBAAmB,GAAG,CAAC;QAC9C,QAAQ,KAAK,cAAc;QAC3B,QAAQ,KAAK,WAAW;QACxB,QAAQ,KAAK,cAAc;QAC3B,QAAQ,KAAK,KAAK,CAAC,MAAM;QACzB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAC7B,CAAC;AACJ,CAAC"}
@@ -1,6 +1,9 @@
1
+ import { validatePromptRegistryCoverage } from "./prompt-registry-validation.js";
1
2
  export interface WorkspaceValidationReport {
2
3
  valid: boolean;
3
4
  errors: string[];
4
5
  warnings: string[];
5
6
  }
6
- export declare function validateWorkspace(root?: string): Promise<WorkspaceValidationReport>;
7
+ export declare function validateWorkspace(root?: string, options?: {
8
+ promptRegistry?: Parameters<typeof validatePromptRegistryCoverage>[1];
9
+ }): Promise<WorkspaceValidationReport>;
@@ -1,10 +1,11 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { DIRECTORIES, EVENT_TYPES, FILES, WORKFLOW_DIR } from "./constants.js";
4
- import { PROMPT_REGISTRY_DIR } from "./prompt-registry.js";
4
+ import { validatePromptRegistryCoverage } from "./prompt-registry-validation.js";
5
5
  import { exists, readJson, resolveWorkflowPath } from "./fs-utils.js";
6
+ import { validateEventArtifacts } from "./workspace-artifacts.js";
6
7
  import { taskIdsFor, validateLocks, validateRoles, validateTasks, } from "./validation.js";
7
- export async function validateWorkspace(root = process.cwd()) {
8
+ export async function validateWorkspace(root = process.cwd(), options = {}) {
8
9
  const issues = [];
9
10
  const base = path.join(root, WORKFLOW_DIR);
10
11
  if (!(await exists(base))) {
@@ -20,6 +21,9 @@ export async function validateWorkspace(root = process.cwd()) {
20
21
  await validateLockFile(root, taskIds, roleIds, issues);
21
22
  await validateConfigFile(root, issues);
22
23
  await validateEventLog(root, issues);
24
+ for (const issue of await validatePromptRegistryCoverage(root, options.promptRegistry ?? {})) {
25
+ issues.push({ severity: issue.severity, message: issue.message });
26
+ }
23
27
  const errors = issues
24
28
  .filter((issue) => issue.severity === "error")
25
29
  .map((issue) => issue.message);
@@ -173,24 +177,8 @@ function validateEventShape(event, line, issues) {
173
177
  }
174
178
  }
175
179
  async function validateArtifacts(root, event, line, issues) {
176
- for (const artifact of event.artifacts ?? []) {
177
- const artifactPath = path.join(root, artifact);
178
- const isWorkflowArtifact = artifact === WORKFLOW_DIR || artifact.startsWith(`${WORKFLOW_DIR}/`);
179
- const isPromptRegistryArtifact = artifact === PROMPT_REGISTRY_DIR ||
180
- artifact.startsWith(`${PROMPT_REGISTRY_DIR}/`);
181
- const isVersionedProjectArtifact = artifact === "CHANGELOG.md" ||
182
- artifact === "README.md" ||
183
- artifact === "package.json" ||
184
- artifact.startsWith("docs/");
185
- if ((!isWorkflowArtifact &&
186
- !isPromptRegistryArtifact &&
187
- !isVersionedProjectArtifact) ||
188
- !(await exists(artifactPath))) {
189
- issues.push({
190
- severity: "error",
191
- message: `events.jsonl:${line}: artifact does not exist: ${artifact}`,
192
- });
193
- }
180
+ for (const issue of await validateEventArtifacts(root, event, line)) {
181
+ issues.push({ severity: "error", message: issue.message });
194
182
  }
195
183
  }
196
184
  function errorMessage(error) {
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-validator.js","sourceRoot":"","sources":["../src/workspace-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-validator.js","sourceRoot":"","sources":["../src/workspace-validator.ts"],"names":[],"mappings":"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"}
@@ -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
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jterrats/open-orchestra",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "type": "module",
5
5
  "workspaces": [
6
6
  "site"