@jterrats/open-orchestra 1.0.7 → 1.0.8

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 (48) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/cli.js +4 -446
  3. package/dist/cli.js.map +1 -1
  4. package/dist/command-route-utils.d.ts +18 -0
  5. package/dist/command-route-utils.js +18 -0
  6. package/dist/command-route-utils.js.map +1 -0
  7. package/dist/command-routes-integrations.d.ts +2 -0
  8. package/dist/command-routes-integrations.js +82 -0
  9. package/dist/command-routes-integrations.js.map +1 -0
  10. package/dist/command-routes.d.ts +2 -0
  11. package/dist/command-routes.js +173 -0
  12. package/dist/command-routes.js.map +1 -0
  13. package/dist/refresh-generated.js +6 -17
  14. package/dist/refresh-generated.js.map +1 -1
  15. package/dist/runtime-bootstrap-targets.d.ts +15 -0
  16. package/dist/runtime-bootstrap-targets.js +68 -0
  17. package/dist/runtime-bootstrap-targets.js.map +1 -0
  18. package/dist/runtime-commands.js +1 -1
  19. package/dist/runtime-commands.js.map +1 -1
  20. package/dist/runtime-execution-renderer.js +10 -52
  21. package/dist/runtime-execution-renderer.js.map +1 -1
  22. package/dist/runtime-execution.js +4 -2
  23. package/dist/runtime-execution.js.map +1 -1
  24. package/dist/runtime-guardrails.js +4 -0
  25. package/dist/runtime-guardrails.js.map +1 -1
  26. package/dist/runtime-renderer-lines.d.ts +5 -0
  27. package/dist/runtime-renderer-lines.js +58 -0
  28. package/dist/runtime-renderer-lines.js.map +1 -0
  29. package/dist/runtime-spawn-bridge.js +19 -9
  30. package/dist/runtime-spawn-bridge.js.map +1 -1
  31. package/dist/runtime-spawn-quality.d.ts +2 -0
  32. package/dist/runtime-spawn-quality.js +11 -0
  33. package/dist/runtime-spawn-quality.js.map +1 -0
  34. package/dist/types/runtime.d.ts +9 -0
  35. package/dist/workspace-init-artifacts.d.ts +8 -0
  36. package/dist/workspace-init-artifacts.js +53 -0
  37. package/dist/workspace-init-artifacts.js.map +1 -0
  38. package/dist/workspace-runtime-bootstrap.d.ts +10 -0
  39. package/dist/workspace-runtime-bootstrap.js +59 -0
  40. package/dist/workspace-runtime-bootstrap.js.map +1 -0
  41. package/dist/workspace.js +4 -135
  42. package/dist/workspace.js.map +1 -1
  43. package/docs/autonomous-workflow.md +7 -0
  44. package/docs/e2e-test-batteries.md +95 -0
  45. package/docs/release-test-matrix.md +7 -0
  46. package/docs/runtime-adapters.md +18 -1
  47. package/docs/site-manifest.json +2 -0
  48. package/package.json +2 -1
package/dist/workspace.js CHANGED
@@ -7,8 +7,9 @@ import { defaultSourceOfTruthCatalog } from "./knowledge-base.js";
7
7
  import { initPhasePlaybooks } from "./phase-playbooks.js";
8
8
  import { DEFAULT_ACTION_POLICY } from "./policy-defaults.js";
9
9
  import { initPromptRegistry, PROMPT_REGISTRY_DIR } from "./prompt-registry.js";
10
- import { getRuntimeAdapter } from "./runtime-adapters.js";
11
- import { renderRuntimeBootstrap, upsertRuntimeBootstrapBlock, } from "./runtime-bootstrap.js";
10
+ import { resolveInitRuntimeBootstrapTargets } from "./runtime-bootstrap-targets.js";
11
+ import { existingInitArtifacts, initGeneratedArtifacts, } from "./workspace-init-artifacts.js";
12
+ import { initAdvisoryRuntimeBootstrapFiles, initRuntimeBootstrapFiles, } from "./workspace-runtime-bootstrap.js";
12
13
  import { classifyWorkspace } from "./workspace-classification.js";
13
14
  import { appendJsonLine, ensureDir, exists, readJson, resolveWorkflowPath, writeJson, } from "./fs-utils.js";
14
15
  import { validateRoles, validateTasks } from "./validation.js";
@@ -68,7 +69,7 @@ export async function initWorkspace({ root = process.cwd(), force = false, advis
68
69
  ...(bootstrapTargetFile ? { bootstrapTargetFile } : {}),
69
70
  ...(runtimeTargets ? { runtimeTargets } : {}),
70
71
  })
71
- : await initRuntimeBootstrapFiles(root, await initBootstrapTargets(root, runtimeTargets));
72
+ : await initRuntimeBootstrapFiles(root, await resolveInitRuntimeBootstrapTargets({ root, runtimeTargets }));
72
73
  const advisoryArtifacts = advisory
73
74
  ? await writeAdvisoryArtifacts({ root, classification })
74
75
  : undefined;
@@ -97,46 +98,6 @@ export async function initWorkspace({ root = process.cwd(), force = false, advis
97
98
  });
98
99
  return base;
99
100
  }
100
- async function initGeneratedArtifacts({ root, advisory, bootstrapTargetFile, runtimeTargets, }) {
101
- const workflowArtifacts = [
102
- WORKFLOW_DIR,
103
- ...DIRECTORIES.map((directory) => workflowArtifact(directory)),
104
- ...Object.values(FILES).map((file) => workflowArtifact(file)),
105
- ];
106
- const promptArtifacts = advisory ? [] : [PROMPT_REGISTRY_DIR];
107
- const advisoryArtifacts = advisory
108
- ? [
109
- workflowArtifact("advisory", "README.md"),
110
- workflowArtifact("advisory", "role-guides.md"),
111
- workflowArtifact("advisory", "decisions.md"),
112
- workflowArtifact("advisory", "conversion.md"),
113
- workflowArtifact("advisory", "project-task.json"),
114
- ]
115
- : [];
116
- const runtimeFiles = advisory
117
- ? [
118
- ...(bootstrapTargetFile ? [bootstrapTargetFile] : []),
119
- ...(await initBootstrapTargets(root, runtimeTargets, false)).map((item) => item.file),
120
- ]
121
- : (await initBootstrapTargets(root, runtimeTargets)).map((item) => item.file);
122
- return [
123
- ...new Set([
124
- ...workflowArtifacts,
125
- ...promptArtifacts,
126
- ...advisoryArtifacts,
127
- ...runtimeFiles,
128
- ]),
129
- ];
130
- }
131
- async function existingInitArtifacts(root, artifacts) {
132
- const existing = [];
133
- for (const artifact of artifacts) {
134
- if (await exists(path.join(root, artifact))) {
135
- existing.push(artifact);
136
- }
137
- }
138
- return existing;
139
- }
140
101
  function assertInitAllowed(classification, confirmUnknown) {
141
102
  if (classification.writePolicy === "blocked") {
142
103
  throw new Error(`workspace is unsafe for init: ${classification.reasons.join(", ")}. ${classification.recommendedAction}`);
@@ -145,98 +106,6 @@ function assertInitAllowed(classification, confirmUnknown) {
145
106
  throw new Error(`workspace requires explicit confirmation: ${classification.reasons.join(", ")}. ${classification.recommendedAction}`);
146
107
  }
147
108
  }
148
- async function initAdvisoryRuntimeBootstrapFile(root, bootstrapTargetFile) {
149
- const target = targetFromBootstrapFile(bootstrapTargetFile);
150
- return initRuntimeBootstrapFiles(root, [
151
- { file: bootstrapTargetFile, target },
152
- ]);
153
- }
154
- async function initAdvisoryRuntimeBootstrapFiles({ root, bootstrapTargetFile, runtimeTargets, }) {
155
- const targets = await initBootstrapTargets(root, runtimeTargets, false);
156
- if (bootstrapTargetFile) {
157
- return [
158
- ...(await initAdvisoryRuntimeBootstrapFile(root, bootstrapTargetFile)),
159
- ...(await initRuntimeBootstrapFiles(root, targets)),
160
- ];
161
- }
162
- return initRuntimeBootstrapFiles(root, targets);
163
- }
164
- async function initRuntimeBootstrapFiles(root, targets = [
165
- { file: "ORCHESTRA.md", target: "generic" },
166
- { file: "AGENTS.md", target: "codex" },
167
- ]) {
168
- const changed = [];
169
- for (const item of targets) {
170
- const filePath = path.join(root, item.file);
171
- const existing = await readFile(filePath, "utf8").catch(() => "");
172
- const result = upsertRuntimeBootstrapBlock(existing, renderRuntimeBootstrap(item.target));
173
- if (result.changed && !result.drift) {
174
- await ensureDir(path.dirname(filePath));
175
- await writeFile(filePath, result.content, "utf8");
176
- changed.push(item.file);
177
- }
178
- }
179
- return changed;
180
- }
181
- async function initBootstrapTargets(root, runtimeTargets, useProjectDefaults = true) {
182
- if (!runtimeTargets || runtimeTargets.length === 0) {
183
- const defaultTargets = useProjectDefaults
184
- ? [
185
- { file: "ORCHESTRA.md", target: "generic" },
186
- { file: "AGENTS.md", target: "codex" },
187
- ]
188
- : [];
189
- return uniqueBootstrapTargets([
190
- ...defaultTargets,
191
- ...(useProjectDefaults ? await detectedBootstrapTargets(root) : []),
192
- ]);
193
- }
194
- return uniqueBootstrapTargets(runtimeTargets.flatMap((target) => getRuntimeAdapter(target).defaultInstructionFiles.map((file) => ({
195
- file,
196
- target,
197
- }))));
198
- }
199
- async function detectedBootstrapTargets(root) {
200
- const detected = [];
201
- if (await exists(path.join(root, ".codex")))
202
- detected.push("codex");
203
- if (await exists(path.join(root, ".claude")))
204
- detected.push("claude");
205
- if (await exists(path.join(root, ".cursor")))
206
- detected.push("cursor");
207
- if (await exists(path.join(root, ".windsurf")))
208
- detected.push("windsurf");
209
- return detected.flatMap((target) => getRuntimeAdapter(target).defaultInstructionFiles.map((file) => ({
210
- file,
211
- target,
212
- })));
213
- }
214
- function uniqueBootstrapTargets(targets) {
215
- const seen = new Set();
216
- return targets.filter((target) => {
217
- const key = `${target.file}:${target.target}`;
218
- if (seen.has(key))
219
- return false;
220
- seen.add(key);
221
- return true;
222
- });
223
- }
224
- function targetFromBootstrapFile(filePath) {
225
- const baseName = path.basename(filePath).toLowerCase();
226
- if (baseName === "claude.md") {
227
- return "claude";
228
- }
229
- if (baseName.includes("cursor")) {
230
- return "cursor";
231
- }
232
- if (baseName.includes("windsurf")) {
233
- return "windsurf";
234
- }
235
- if (baseName === "agents.md") {
236
- return "codex";
237
- }
238
- return "generic";
239
- }
240
109
  export async function loadWorkspace(root = process.cwd()) {
241
110
  const base = workflowRoot(root);
242
111
  if (!(await exists(base))) {
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
@@ -128,6 +128,13 @@ after active delegation sessions complete or close. This prevents a parent
128
128
  agent from launching more subagents than the local runtime or SaaS tenant can
129
129
  handle.
130
130
 
131
+ Detached phase execution is full async. The workflow records the spawn request
132
+ and session metadata, then returns control to the parent agent. The parent can
133
+ continue conversation or other commands while child sessions run. Session
134
+ completion is reconciled through lifecycle events, runtime notifications, or an
135
+ explicit later `runtime sessions` check. Waiting is only appropriate when the
136
+ next parent action is truly blocked by that specific child result.
137
+
131
138
  Phase executor provenance is written to `.agent-workflow/workflow-runs.jsonl`
132
139
  and into handoff artifacts. It includes phase, role, runtime, executor type,
133
140
  delegation packet artifact when rendered, session id when known, fallback
@@ -0,0 +1,95 @@
1
+ # End-to-End Test Batteries
2
+
3
+ Open Orchestra needs E2E coverage that proves installed-user journeys, browser
4
+ journeys, runtime delegation, and release gates work together. Unit tests can
5
+ prove helpers; E2E batteries must prove observable behavior from the public
6
+ entry points a user or CI runner actually executes.
7
+
8
+ ## Policy
9
+
10
+ - Every E2E scenario must run against an isolated temporary workspace unless it
11
+ is explicitly validating this repository's site or web console.
12
+ - Tests must validate command output, exit code, JSON contracts, filesystem
13
+ artifacts, workflow events, and release-readiness effects when applicable.
14
+ - Browser tests must validate visible UI state, persisted API effects, keyboard
15
+ or responsive behavior when relevant, and evidence artifacts for user-facing
16
+ flows.
17
+ - External provider, GitHub, Sonar, or network-dependent paths must be opt-in
18
+ and must report skipped or deferred evidence when offline.
19
+ - A release can ship only when P0 batteries pass or a release-manager accepted
20
+ risk records the unavailable environment and compensating evidence.
21
+
22
+ ## P0 Release-Blocking Batteries
23
+
24
+ | Battery | Scope | Command | Minimum Assertions | Evidence |
25
+ | --- | --- | --- | --- | --- |
26
+ | Source quality | Static checks, build, unit tests, workflow validation, secret scan, security audit | `npm run precommit` | exit code 0, no leaks, no audit blockers, workflow valid | command log |
27
+ | Local CLI onboarding | Current source CLI in `/tmp` workspaces | `ORCHESTRA_NODE_SCRIPT=$PWD/bin/orchestra.js npm run test:e2e:init` | `--version`, `init`, `status`, `validate`, first-use task, handoff, evidence, release readiness | stdout/stderr, JSON output, filesystem assertions |
28
+ | Installed CLI onboarding | Installed or packaged CLI in `/tmp` workspaces | `npm run test:e2e:init` after installing the candidate package | same assertions as local CLI onboarding, proving the packaged binary matches source behavior | stdout/stderr, JSON output, filesystem assertions, package version |
29
+ | Browser console | Web console task, cost, provider, delegation, recovery, evidence, workflow, accessibility, artifacts | `npm run test:e2e` | visible state, API persistence, evidence attachment, lifecycle transitions, responsive/keyboard behavior | Playwright report, screenshots/traces on failure |
30
+ | Public site | Documentation/site navigation, docs catalog, architecture viewer, mobile fit | `npm run test:e2e` | navigation order, local docs catalog search, no raw GitHub redirect for docs, mobile content fit | Playwright report |
31
+ | Runtime manual queue | Manual runtime delegation in a `/tmp` workspace | `npm run test:e2e:runtime` | two active sessions, third manual `spawn-request` materializes `queued`, artifact includes lifecycle commands, `runtime sessions` lists queued session | stdout/stderr, JSON output, artifact content |
32
+ | Init refresh environments | Simulated Codex, Claude, Cursor, generic workspaces | `node --test e2e/init-refresh-environments.test.js` | missing runtime guidance files regenerate on `init --force`, user content is preserved, managed blocks are updated only inside managed ranges | filesystem diff assertions |
33
+ | Workflow lifecycle CLI | CLI workflow run, gate, resume, QA failback, release readiness | `node --test e2e/workflow-lifecycle-cli.test.js` | task phases create handoffs, blocked QA routes back, routine gate resumes immediately, release readiness maps acceptance to evidence | JSON output, events, handoffs |
34
+
35
+ ## P1 High-Risk Regression Batteries
36
+
37
+ | Battery | Scope | Command | Minimum Assertions | Evidence |
38
+ | --- | --- | --- | --- | --- |
39
+ | Multi-squad runtime | Parallel squad delegation with queue and threshold policy | `node --test e2e/runtime-multi-squad.test.js` | independent sessions, non-blocking parent, queued sessions do not fall back to parent, completion order reconciles | JSON output, lifecycle events |
40
+ | Acceptance evidence | CLI, API, browser, and deferred integration evidence | `node --test e2e/acceptance-evidence.test.js` | evidence maps to named acceptance criteria, deferred external validation requires owner and rationale | evidence artifacts |
41
+ | Recovery and repair | Interrupted runs, stale locks, failed provider phases | `node --test e2e/recovery-cli.test.js` plus browser recovery coverage | recovery detects issue, repair requires confirmation, repaired state is observable | JSON output, before/after state |
42
+ | Docs/site content source | Site content generated from docs and manifest | `npm run site:build && npm run test:e2e -- --grep docs` | docs render as human-friendly catalog, no markdown-only dead ends, search works | Playwright report |
43
+ | Security-sensitive operations | File paths, shell execution, web writes, secrets, telemetry redaction | `node --test e2e/security-boundaries.test.js` | path traversal blocked, unsafe writes rejected, secret-like data redacted, no raw stack traces | command/API evidence |
44
+
45
+ ## P2 Extended Confidence Batteries
46
+
47
+ | Battery | Scope | Command | Minimum Assertions | Evidence |
48
+ | --- | --- | --- | --- | --- |
49
+ | Tracker and GitHub sync | Issue import/export and close readiness | opt-in CI job with network credentials | labels, comments, close gate, release readiness, no secret exposure | sanitized logs |
50
+ | Sonar quality loop | Local or remote Sonar import and release gate mapping | configured Sonar workflow or local compose job | insights imported, release readiness reflects quality gate, unavailable token is explicit | artifact import report |
51
+ | Provider-backed delegation | OpenAI, Gemini, Ollama, Claude/Cursor runtime bridges | opt-in provider E2E | budget checks, rate-limit/backpressure, lifecycle events, no direct API when disallowed | redacted provider provenance |
52
+ | Package release dry run | npm package contents and release check | `npm pack --dry-run --json && orchestra release check --json` | generated/private state excluded, version/tag policy valid, release readiness complete | package list, release report |
53
+
54
+ ## Required `/tmp` Fixture Patterns
55
+
56
+ Each temporary-workspace E2E must create its own root with a deterministic
57
+ prefix and must cleanly assert the following when relevant:
58
+
59
+ - workspace classification before and after `init`;
60
+ - generated `.agent-workflow` state and target runtime guidance files;
61
+ - command JSON shape and human stdout where users rely on it;
62
+ - event records for task, estimate, workflow, handoff, evidence, review, and
63
+ runtime lifecycle;
64
+ - artifact contents for handoffs, evidence, spawn requests, and generated
65
+ prompts;
66
+ - release-readiness output before and after required evidence exists.
67
+
68
+ CLI E2E must run in two modes before release: source mode through
69
+ `ORCHESTRA_NODE_SCRIPT=$PWD/bin/orchestra.js`, and installed-package mode through
70
+ the candidate package binary. A pass in source mode and a fail in installed mode
71
+ means the implementation is correct locally but the installed binary is stale or
72
+ the packaging/install path is wrong.
73
+
74
+ ## Implementation Order
75
+
76
+ 1. Keep `e2e/runtime-manual-queue.test.js` release-blocking as runtime
77
+ delegation evolves.
78
+ 2. Add `e2e/init-refresh-environments.test.js` for Codex, Claude, Cursor, and
79
+ generic project simulations.
80
+ 3. Add `e2e/workflow-lifecycle-cli.test.js` for workflow run, gate, failback,
81
+ resume, and release readiness.
82
+ 4. Add `e2e/runtime-multi-squad.test.js` for async background squad behavior.
83
+ 5. Add focused security and acceptance-evidence E2E only where unit tests cannot
84
+ prove the user-visible contract.
85
+
86
+ ## Definition Of Done
87
+
88
+ An E2E battery is complete only when it has:
89
+
90
+ - isolated fixtures;
91
+ - acceptance criteria listed in the test;
92
+ - assertions for all criteria;
93
+ - failure output that names the broken user contract;
94
+ - evidence expectations documented in the test or matrix;
95
+ - CI placement documented as P0, P1, or P2.
@@ -4,6 +4,12 @@ The release test matrix is the minimum validation surface for a production
4
4
  `1.0.0` candidate. It is intentionally explicit so release readiness can attach
5
5
  reviewable evidence instead of relying on conversational sign-off.
6
6
 
7
+ Detailed release-blocking and extended E2E batteries are defined in
8
+ [End-to-End Test Batteries](e2e-test-batteries.md). This matrix lists the
9
+ current release commands; the battery catalog defines the required growth path
10
+ for installed CLI, temporary workspaces, runtime delegation, browser, recovery,
11
+ security, and provider-backed coverage.
12
+
7
13
  ## Command
8
14
 
9
15
  ```bash
@@ -46,6 +52,7 @@ manual intervention is required.
46
52
  | Sonar quality gate | GitHub Actions: `Sonar` or local SonarQube import | conditional quality gate for duplication, bugs, code smells, maintainability, coverage readiness, and security hotspots when a Sonar provider is configured |
47
53
  | Browser E2E | `npm run test:e2e` | Playwright checks map scenario acceptance criteria to visible UI state, API persistence, artifact attachment, responsive layout, and recovery behavior |
48
54
  | Installed package init | `npm run test:e2e:init` | Installed CLI checks map scenario acceptance criteria to stdout, stderr, exit code, filesystem state, JSON contracts, evidence records, and release-readiness outcomes |
55
+ | Runtime manual queue | `npm run test:e2e:runtime` | Temporary-workspace runtime checks prove manual spawn requests queue under delegate pressure and expose queued artifacts through runtime sessions |
49
56
  | Public site build | `npm run site:build` | production site build |
50
57
  | Release readiness | `orchestra release check --json` | `releaseReadiness` and `gaReadiness` report |
51
58
  | Package contents | `npm pack --dry-run --json` | package file list and provenance check |
@@ -245,13 +245,29 @@ parent-agent fallback reason. `subagents` requires runtime-native support and
245
245
  fails fast if the runtime cannot satisfy it. `single-agent` forces the parent
246
246
  agent path and records that choice in phase provenance.
247
247
 
248
+ Subagent spawning is fully asynchronous by default. A spawn request returns the
249
+ `sessionId`, request artifact, prompt artifact, expected result artifact, status,
250
+ next lifecycle commands, and quality warnings, then the parent agent should
251
+ return control to the user. The parent should not wait for the child unless the
252
+ next parent action is explicitly blocked on that result. Completion is
253
+ reconciled later through `runtime spawn-lifecycle`, runtime notifications, or an
254
+ explicit `runtime sessions` poll.
255
+
248
256
  Subagent spawning is bounded by `runtimePolicy.delegation.guardrails`.
249
257
  `maxConcurrentDelegates` is the threshold for simultaneously running delegated
250
258
  sessions, `maxSpawnsPerTask` limits fan-out for one task, and `limitAction`
251
259
  controls whether pressure should `queue` or `reject`. With the default `queue`
252
260
  policy, a phase that cannot acquire capacity is paused as a queued runtime
253
261
  subagent instead of silently falling back to the parent agent. Resume the
254
- workflow after capacity is released.
262
+ workflow after capacity is released. Manual `runtime spawn-request` calls follow
263
+ the same guardrails: `queue` materializes a queued request artifact and session,
264
+ while `reject` fails before creating a delegation artifact.
265
+
266
+ For multi-squad work, the parent renders one spawn request per independent
267
+ squad/role/phase. Each detached session is tracked independently by `sessionId`;
268
+ completion order is intentionally non-deterministic. Release aggregation,
269
+ handoff review, and QA reconciliation happen at explicit gates or status checks,
270
+ not by sequential waits in the parent conversation.
255
271
 
256
272
  Each phase stores executor provenance in the workflow run and handoff:
257
273
  execution mode, executor type, phase, role, runtime id, delegation packet path
@@ -311,6 +327,7 @@ orchestra runtime adapters --json
311
327
  orchestra runtime brief --task <id> --runtime codex-cli --json
312
328
  orchestra runtime delegate-plan --task <id> --runtime opencode-cli --roles qa --json
313
329
  orchestra runtime spawn-request --task <id> --role developer --runtime codex-cli --json
330
+ orchestra runtime sessions --task <id> --json
314
331
  orchestra runtime spawn-lifecycle --session <id> --status completed --agent-id <id> --json
315
332
  orchestra model providers --json
316
333
  ```
@@ -112,6 +112,7 @@
112
112
  "links": [
113
113
  { "title": "Adoption guide", "source": "docs/adoption-guide.md", "heading": "Open Orchestra 1.0.0 Adoption Guide" },
114
114
  { "title": "Core command surface", "source": "docs/core-command-surface.md", "heading": "Core Command Surface" },
115
+ { "title": "E2E test batteries", "source": "docs/e2e-test-batteries.md", "heading": "End-to-End Test Batteries" },
115
116
  { "title": "Duplicate-code enforcement", "source": "docs/duplicate-code-enforcement.md", "heading": "Duplicate-Code Enforcement" },
116
117
  { "title": "Sonar quality gates", "source": "docs/sonar-quality-gates.md", "heading": "Sonar Quality Gates" },
117
118
  { "title": "Sonar architecture model", "source": "docs/sonar-architecture-model.md", "heading": "Sonar Architecture Model" },
@@ -122,6 +123,7 @@
122
123
  "releaseDocs": {
123
124
  "links": [
124
125
  { "title": "Release test matrix", "source": "docs/release-test-matrix.md", "heading": "1.0.0 Release Test Matrix" },
126
+ { "title": "E2E test batteries", "source": "docs/e2e-test-batteries.md", "heading": "End-to-End Test Batteries" },
125
127
  { "title": "Sonar quality gates", "source": "docs/sonar-quality-gates.md", "heading": "Sonar Quality Gates" },
126
128
  { "title": "Sonar architecture model", "source": "docs/sonar-architecture-model.md", "heading": "Sonar Architecture Model" },
127
129
  { "title": "QA evidence", "source": "docs/site-content-workflow.md", "heading": "QA Evidence" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jterrats/open-orchestra",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "type": "module",
5
5
  "workspaces": [
6
6
  "extensions/vscode-open-orchestra",
@@ -17,6 +17,7 @@
17
17
  "test:coverage": "npm run build && c8 --reporter=lcov --reports-dir coverage --exclude \"test/**\" --exclude \"e2e/**\" --exclude \"extensions/**/test/**\" --exclude \"dist/assets/**\" --exclude \"dist/web-console/**\" node --test test/**/*.js extensions/**/*.test.cjs",
18
18
  "test:e2e": "npm run build && npm run site:build && playwright test",
19
19
  "test:e2e:init": "node --test e2e/init-onboarding.test.js",
20
+ "test:e2e:runtime": "node --test e2e/runtime-manual-queue.test.js",
20
21
  "lint": "eslint . && prettier --check \"{bin,e2e,scripts,test,src}/**/*.js\" \"{site,web-console}/src/**/*.{css,js,jsx}\" \"{site,web-console}/*.{html,js,json}\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
21
22
  "format": "prettier --write \"{bin,e2e,scripts,test,src}/**/*.js\" \"{site,web-console}/src/**/*.{css,js,jsx}\" \"{site,web-console}/*.{html,js,json}\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
22
23
  "secret-scan": "node scripts/secret-scan.js",