@jterrats/open-orchestra 1.0.5 → 1.0.7
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/dist/args.js +6 -2
- package/dist/args.js.map +1 -1
- package/dist/autonomous-run-state.js +12 -18
- package/dist/autonomous-run-state.js.map +1 -1
- package/dist/benchmark.js +6 -1
- package/dist/benchmark.js.map +1 -1
- package/dist/cli.js +11 -12
- package/dist/cli.js.map +1 -1
- package/dist/command-manifest.js +3 -0
- package/dist/command-manifest.js.map +1 -1
- package/dist/commands.d.ts +2 -1
- package/dist/commands.js +6 -1
- package/dist/commands.js.map +1 -1
- package/dist/constants.js +5 -0
- package/dist/constants.js.map +1 -1
- package/dist/cursor-canvas.js +1 -1
- package/dist/cursor-canvas.js.map +1 -1
- package/dist/delivery-dashboard.js +8 -5
- package/dist/delivery-dashboard.js.map +1 -1
- package/dist/extensions.js +2 -1
- package/dist/extensions.js.map +1 -1
- package/dist/instruction-blocks.js +6 -1
- package/dist/instruction-blocks.js.map +1 -1
- package/dist/lesson-assist.js +1 -1
- package/dist/lesson-assist.js.map +1 -1
- package/dist/mcp-tool-adapter.js +2 -2
- package/dist/mcp-tool-adapter.js.map +1 -1
- package/dist/memory.js +1 -1
- package/dist/memory.js.map +1 -1
- package/dist/package-info.d.ts +7 -0
- package/dist/package-info.js +32 -0
- package/dist/package-info.js.map +1 -0
- package/dist/phase-executor.js +6 -22
- package/dist/phase-executor.js.map +1 -1
- package/dist/planning-commands.js +2 -10
- package/dist/planning-commands.js.map +1 -1
- package/dist/prompt-registry-validation.js +1 -1
- package/dist/prompt-registry-validation.js.map +1 -1
- package/dist/qa-coverage.js +2 -11
- package/dist/qa-coverage.js.map +1 -1
- package/dist/release-commands.js +5 -2
- package/dist/release-commands.js.map +1 -1
- package/dist/release-readiness.d.ts +7 -0
- package/dist/release-readiness.js +31 -1
- package/dist/release-readiness.js.map +1 -1
- package/dist/runtime-bootstrap.js +9 -1
- package/dist/runtime-bootstrap.js.map +1 -1
- package/dist/runtime-budget-envelopes.d.ts +33 -0
- package/dist/runtime-budget-envelopes.js +93 -0
- package/dist/runtime-budget-envelopes.js.map +1 -0
- package/dist/runtime-commands.d.ts +2 -0
- package/dist/runtime-commands.js +44 -1
- package/dist/runtime-commands.js.map +1 -1
- package/dist/runtime-execution-adapters.js +44 -4
- package/dist/runtime-execution-adapters.js.map +1 -1
- package/dist/runtime-execution-renderer.d.ts +7 -1
- package/dist/runtime-execution-renderer.js +69 -0
- package/dist/runtime-execution-renderer.js.map +1 -1
- package/dist/runtime-execution.d.ts +11 -1
- package/dist/runtime-execution.js +68 -12
- package/dist/runtime-execution.js.map +1 -1
- package/dist/runtime-guardrails.js +2 -0
- package/dist/runtime-guardrails.js.map +1 -1
- package/dist/runtime-parent-actions.d.ts +10 -0
- package/dist/runtime-parent-actions.js +63 -0
- package/dist/runtime-parent-actions.js.map +1 -0
- package/dist/runtime-scheduler.d.ts +64 -0
- package/dist/runtime-scheduler.js +171 -0
- package/dist/runtime-scheduler.js.map +1 -0
- package/dist/runtime-spawn-bridge.d.ts +25 -0
- package/dist/runtime-spawn-bridge.js +182 -0
- package/dist/runtime-spawn-bridge.js.map +1 -0
- package/dist/runtime-spawn-guidance.d.ts +3 -0
- package/dist/runtime-spawn-guidance.js +52 -0
- package/dist/runtime-spawn-guidance.js.map +1 -0
- package/dist/skills-catalog.js +69 -0
- package/dist/skills-catalog.js.map +1 -1
- package/dist/skills-planning.js +6 -20
- package/dist/skills-planning.js.map +1 -1
- package/dist/sonar-commands.d.ts +2 -0
- package/dist/sonar-commands.js +56 -0
- package/dist/sonar-commands.js.map +1 -0
- package/dist/sonar-insights.d.ts +63 -0
- package/dist/sonar-insights.js +144 -0
- package/dist/sonar-insights.js.map +1 -0
- package/dist/sonar-provider.d.ts +12 -0
- package/dist/sonar-provider.js +54 -0
- package/dist/sonar-provider.js.map +1 -0
- package/dist/subagent-protocol.js +4 -0
- package/dist/subagent-protocol.js.map +1 -1
- package/dist/telemetry-export.js +19 -24
- package/dist/telemetry-export.js.map +1 -1
- package/dist/telemetry-redaction.js +7 -4
- package/dist/telemetry-redaction.js.map +1 -1
- package/dist/tracker-adapters.js +7 -6
- package/dist/tracker-adapters.js.map +1 -1
- package/dist/types/model-config.d.ts +3 -0
- package/dist/types/runtime.d.ts +58 -0
- package/dist/types/workflow-run.d.ts +6 -2
- package/dist/types.d.ts +2 -1
- package/dist/types.js.map +1 -1
- package/dist/upgrade-commands.js +1 -11
- package/dist/upgrade-commands.js.map +1 -1
- package/dist/web-api-read-routes.js +19 -10
- package/dist/web-api-read-routes.js.map +1 -1
- package/dist/web-api.js +29 -6
- package/dist/web-api.js.map +1 -1
- package/dist/web-console/assets/index-CgSKcay8.js +11 -0
- package/dist/web-console/index.html +1 -1
- package/dist/web-runtime-actions.d.ts +4 -0
- package/dist/web-runtime-actions.js +53 -0
- package/dist/web-runtime-actions.js.map +1 -0
- package/dist/workflow-approval-service.js +14 -18
- package/dist/workflow-approval-service.js.map +1 -1
- package/dist/workflow-background-subagents.d.ts +13 -0
- package/dist/workflow-background-subagents.js +80 -0
- package/dist/workflow-background-subagents.js.map +1 -0
- package/dist/workflow-markdown.d.ts +2 -1
- package/dist/workflow-markdown.js +11 -0
- package/dist/workflow-markdown.js.map +1 -1
- package/dist/workflow-run-commands.js +77 -3
- package/dist/workflow-run-commands.js.map +1 -1
- package/dist/workflow-services.d.ts +1 -0
- package/dist/workflow-services.js +67 -6
- package/dist/workflow-services.js.map +1 -1
- package/dist/workflow-task-service.js +24 -19
- package/dist/workflow-task-service.js.map +1 -1
- package/dist/workspace.js +39 -9
- package/dist/workspace.js.map +1 -1
- package/docs/audio-video-transcription-skill.md +58 -0
- package/docs/command-contracts.md +11 -0
- package/docs/core-command-surface.md +6 -0
- package/docs/generated-artifact-api-catalog.md +366 -0
- package/docs/release-test-matrix.md +9 -5
- package/docs/runtime-adapters.md +76 -8
- package/docs/site-manifest.json +1 -0
- package/docs/sonar-quality-gates.md +79 -5
- package/package.json +1 -1
- package/skills/audio-video-transcription/SKILL.md +129 -0
- package/skills/audio-video-transcription/manifest.json +61 -0
- package/dist/web-console/assets/index-BNESIVvk.js +0 -11
package/docs/runtime-adapters.md
CHANGED
|
@@ -26,6 +26,13 @@ packet:
|
|
|
26
26
|
|
|
27
27
|
- `codex-cli`: use the current Codex CLI/session. Tool permissions and shell
|
|
28
28
|
approvals stay inside Codex; Orchestra renders briefs and packets only.
|
|
29
|
+
- `claude-cli`: use the current Claude Code session. Orchestra renders the
|
|
30
|
+
packet and the Claude parent launches it with the native Agent/Subagent tool
|
|
31
|
+
when available; `Task` is treated as a legacy alias if that is what the
|
|
32
|
+
runtime exposes.
|
|
33
|
+
- `cursor-cli`: use the current Cursor runtime. Orchestra renders the packet
|
|
34
|
+
and the Cursor parent launches it as a Background Agent so the current chat
|
|
35
|
+
remains usable while the child works.
|
|
29
36
|
- `opencode-cli`: use an authenticated OpenCode CLI with its own provider
|
|
30
37
|
config. Orchestra uses the generic instruction target and never copies
|
|
31
38
|
provider keys into workflow artifacts.
|
|
@@ -49,6 +56,15 @@ config. Runtime packets keep `directProviderApiAllowed: false`; provider API
|
|
|
49
56
|
execution only happens in the workflow phase provider layer when policy allows
|
|
50
57
|
it.
|
|
51
58
|
|
|
59
|
+
Provider-backed phases require explicit opt-in. Connecting a provider with
|
|
60
|
+
`--allow-direct-provider-api` records both the allowed provider and
|
|
61
|
+
`runtimePolicy.delegation.allowDirectProviderApi=true`; without that opt-in,
|
|
62
|
+
workflow phases fail before calling the provider. Successful provider-backed
|
|
63
|
+
phases are recorded as `executor: provider-backed-phase` with provider, model,
|
|
64
|
+
fallbacks, and `directProviderApiAllowed: true`. Runtime-native subagent
|
|
65
|
+
requests remain `directProviderApiAllowed: false`, even when provider routing is
|
|
66
|
+
configured for the same role.
|
|
67
|
+
|
|
52
68
|
## Init Modes
|
|
53
69
|
|
|
54
70
|
Default project init keeps the current compact bootstrap behavior:
|
|
@@ -144,12 +160,52 @@ orchestra runtime sessions --task STORY-001 --json
|
|
|
144
160
|
orchestra runtime session --session STORY-001:claude-cli --action suspend --json
|
|
145
161
|
orchestra runtime session --session STORY-001:claude-cli --action resume --json
|
|
146
162
|
orchestra runtime session --session STORY-001:claude-cli --action cancel --json
|
|
163
|
+
orchestra runtime spawn-request --task STORY-001 --role developer --runtime codex-cli --json
|
|
164
|
+
orchestra runtime spawn-lifecycle --session STORY-001:manual:developer:codex-cli --status spawned --agent-id <runtime-agent-id> --json
|
|
147
165
|
```
|
|
148
166
|
|
|
149
|
-
The matching
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
167
|
+
The matching local APIs are `GET /api/runtime/sessions`,
|
|
168
|
+
`POST /api/runtime/spawn-request`, and `POST /api/runtime/spawn-lifecycle`.
|
|
169
|
+
Session operations do not kill external provider processes directly; they
|
|
170
|
+
record auditable suspend, resume, cancel, close, spawned, active, completed,
|
|
171
|
+
failed, or timed-out events so the parent runtime can reconcile claimed work,
|
|
172
|
+
spawned agent ids, stale sessions, and handoff state without inventing a second
|
|
173
|
+
source of truth.
|
|
174
|
+
|
|
175
|
+
Spawn request JSON includes `parentRuntimeAction`, a structured instruction for
|
|
176
|
+
the active parent runtime. Codex receives `kind=codex-spawn-agent` with
|
|
177
|
+
`tool=spawn_agent`; Claude receives `kind=claude-agent-request` with
|
|
178
|
+
`tool=claude-code-agent`; Cursor receives `kind=cursor-background-agent` with
|
|
179
|
+
`tool=cursor-background-agent`. The action points to the prompt artifact,
|
|
180
|
+
expected result artifact, ownership paths, allowed commands, and lifecycle
|
|
181
|
+
commands. It does not include secrets or direct provider credentials.
|
|
182
|
+
|
|
183
|
+
## Native Background Agent Notes
|
|
184
|
+
|
|
185
|
+
Claude Code and Cursor do not need Orchestra to call vendor APIs directly.
|
|
186
|
+
They need a precise packet and lifecycle hooks:
|
|
187
|
+
|
|
188
|
+
- Claude Code: render `runtime spawn-request`, then launch the packet from the
|
|
189
|
+
parent Claude session with the native Agent/Subagent tool. If the local
|
|
190
|
+
Claude runtime exposes `Task` as the tool name, treat it as the compatible
|
|
191
|
+
legacy alias. Record the returned child id or role label through
|
|
192
|
+
`runtime spawn-lifecycle`.
|
|
193
|
+
- Codex: render `runtime spawn-request`, read `parentRuntimeAction`, and call
|
|
194
|
+
the parent `spawn_agent` tool with the prompt artifact as the role-scoped
|
|
195
|
+
assignment. Keep the child detached unless the parent is blocked.
|
|
196
|
+
- Cursor: render `runtime spawn-request`, then launch it as a Cursor Background
|
|
197
|
+
Agent. Background work should stay detached from the current chat and report
|
|
198
|
+
lifecycle state back to Orchestra before the workflow is resumed.
|
|
199
|
+
- All runtimes: keep `directProviderApiAllowed=false`, keep child prompts
|
|
200
|
+
scoped to the request artifact, avoid full transcript transfer, and record a
|
|
201
|
+
terminal lifecycle event before marking the phase complete.
|
|
202
|
+
|
|
203
|
+
The current vendor behavior this maps to is:
|
|
204
|
+
|
|
205
|
+
- Claude Code supports custom subagents with separate context and allows direct
|
|
206
|
+
subagent invocation from the parent session.
|
|
207
|
+
- Cursor Background Agents run isolated remote agents in parallel and can be
|
|
208
|
+
launched while the user continues working.
|
|
153
209
|
|
|
154
210
|
## Workflow Phase Executors
|
|
155
211
|
|
|
@@ -163,7 +219,14 @@ role/profile with the runtime executor:
|
|
|
163
219
|
`opencode-cli`, `vscode-agent`, `windsurf-agent`, or `generic-runtime`.
|
|
164
220
|
This controls where the brief or delegation packet is intended to run.
|
|
165
221
|
- **Subagent**: a runtime-native role-scoped execution unit, only available
|
|
166
|
-
when the selected runtime adapter declares `subagents.runtimeNative: true
|
|
222
|
+
when the selected runtime adapter declares `subagents.runtimeNative: true`
|
|
223
|
+
and a supported `subagents.spawn.mode`.
|
|
224
|
+
- **Spawn bridge**: the runtime-specific mechanism for creating that child
|
|
225
|
+
execution. Modes are `unsupported`, `request-only`, `parent-tool`, and
|
|
226
|
+
`local-process`. `codex-cli` is the first `parent-tool` bridge and renders a
|
|
227
|
+
`spawn_agent` request for the active Codex parent session; other runtimes can
|
|
228
|
+
consume the same request artifact without allowing Orchestra to call vendor
|
|
229
|
+
APIs directly.
|
|
167
230
|
- **Provider**: a direct model/provider route used by provider-backed phase
|
|
168
231
|
prompts. Provider APIs are separate from runtime-native subagents and are
|
|
169
232
|
never used as a silent fallback for runtime delegation.
|
|
@@ -176,7 +239,7 @@ orchestra workflow run --task STORY-001 --phase-execution subagents
|
|
|
176
239
|
orchestra workflow run --task STORY-001 --phase-execution single-agent
|
|
177
240
|
```
|
|
178
241
|
|
|
179
|
-
`auto` uses runtime
|
|
242
|
+
`auto` uses runtime spawn request artifacts when the selected runtime supports
|
|
180
243
|
them and delegation guardrails allow the spawn; otherwise it records a
|
|
181
244
|
parent-agent fallback reason. `subagents` requires runtime-native support and
|
|
182
245
|
fails fast if the runtime cannot satisfy it. `single-agent` forces the parent
|
|
@@ -192,8 +255,11 @@ workflow after capacity is released.
|
|
|
192
255
|
|
|
193
256
|
Each phase stores executor provenance in the workflow run and handoff:
|
|
194
257
|
execution mode, executor type, phase, role, runtime id, delegation packet path
|
|
195
|
-
when one was rendered, session id when available,
|
|
196
|
-
`directProviderApiAllowed=false`.
|
|
258
|
+
or spawn request path when one was rendered, session id when available,
|
|
259
|
+
fallback reason, and `directProviderApiAllowed=false`. Spawn request artifacts
|
|
260
|
+
include the phase, role, session id, parent tool name when applicable, prompt
|
|
261
|
+
artifact, expected result artifact, ownership paths, queue status, and the
|
|
262
|
+
guardrail evaluation so the parent runtime can prove what was delegated.
|
|
197
263
|
|
|
198
264
|
Cursor canvas sync is intentionally runtime-specific:
|
|
199
265
|
|
|
@@ -244,5 +310,7 @@ The stable inspection commands are:
|
|
|
244
310
|
orchestra runtime adapters --json
|
|
245
311
|
orchestra runtime brief --task <id> --runtime codex-cli --json
|
|
246
312
|
orchestra runtime delegate-plan --task <id> --runtime opencode-cli --roles qa --json
|
|
313
|
+
orchestra runtime spawn-request --task <id> --role developer --runtime codex-cli --json
|
|
314
|
+
orchestra runtime spawn-lifecycle --session <id> --status completed --agent-id <id> --json
|
|
247
315
|
orchestra model providers --json
|
|
248
316
|
```
|
package/docs/site-manifest.json
CHANGED
|
@@ -140,6 +140,7 @@
|
|
|
140
140
|
"reference": {
|
|
141
141
|
"links": [
|
|
142
142
|
{ "title": "Command contracts", "source": "docs/command-contracts.md", "heading": "Command Contracts" },
|
|
143
|
+
{ "title": "Generated artifact APIs", "source": "docs/generated-artifact-api-catalog.md", "heading": "Generated Artifact API Catalog" },
|
|
143
144
|
{ "title": "Runtime LLM flow", "source": "docs/runtime-llm-flow.md", "heading": "Runtime LLM Flow" },
|
|
144
145
|
{ "title": "Tracker adapter contract", "source": "docs/tracker-adapter-contract.md", "heading": "Tracker Adapter Contract" },
|
|
145
146
|
{ "title": "Source of truth and learning", "source": "docs/source-of-truth-and-agent-learning.md", "heading": "Source of Truth and Agent Learning" }
|
|
@@ -8,18 +8,39 @@ does not replace secret scanning or runtime policy enforcement.
|
|
|
8
8
|
The repository includes `sonar-project.properties` and a dedicated GitHub
|
|
9
9
|
Actions workflow at `.github/workflows/sonar.yml`.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Supported provider modes:
|
|
12
|
+
|
|
13
|
+
- `sonarcloud`: hosted SonarQube Cloud. Best for quick setup and public or
|
|
14
|
+
small repositories where hosted analysis is acceptable.
|
|
15
|
+
- `sonarqube-local`: local SonarQube for development and private-repo
|
|
16
|
+
dogfooding. The default local host is `http://localhost:9000`.
|
|
17
|
+
- `sonarqube-self-hosted`: organization-managed SonarQube Server. Use this for
|
|
18
|
+
regulated tenants, private codebases, or repositories where hosted LOC limits
|
|
19
|
+
and external API permissions are a concern.
|
|
20
|
+
|
|
21
|
+
Required GitHub secret when the GitHub Actions workflow is enabled:
|
|
12
22
|
|
|
13
23
|
- `SONAR_TOKEN`: token for SonarQube Cloud or SonarQube Server.
|
|
14
24
|
|
|
15
25
|
Optional GitHub secret:
|
|
16
26
|
|
|
17
|
-
- `SONAR_HOST_URL`: required
|
|
18
|
-
for
|
|
27
|
+
- `SONAR_HOST_URL`: required for self-hosted SonarQube Server. Leave unset for
|
|
28
|
+
SonarQube Cloud, or set `http://localhost:9000` only for local commands.
|
|
29
|
+
|
|
30
|
+
Optional GitHub variables:
|
|
31
|
+
|
|
32
|
+
- `SONAR_PROVIDER`: `sonarcloud`, `sonarqube-local`, or
|
|
33
|
+
`sonarqube-self-hosted`. GitHub-hosted runners normally use `sonarcloud` or a
|
|
34
|
+
reachable self-hosted server; local SonarQube is intended for local commands.
|
|
35
|
+
- `SONAR_CLOUD_ENABLED`: set to `true` to run SonarCloud automatically on push
|
|
36
|
+
and pull request events. When unset, SonarCloud runs only through manual
|
|
37
|
+
`workflow_dispatch`.
|
|
38
|
+
- `SONAR_QUALITY_GATE_WAIT`: set to `true` to fail the workflow when the remote
|
|
39
|
+
quality gate fails.
|
|
19
40
|
|
|
20
41
|
The workflow skips analysis when `SONAR_TOKEN` is not configured. This keeps
|
|
21
|
-
forks and offline development usable
|
|
22
|
-
|
|
42
|
+
forks and offline development usable. For private repositories, keep
|
|
43
|
+
`SONAR_CLOUD_ENABLED` unset unless hosted analysis is intentionally approved.
|
|
23
44
|
|
|
24
45
|
The workflow supports remote quality gate enforcement when the repository
|
|
25
46
|
variable `SONAR_QUALITY_GATE_WAIT=true` is configured. In that mode the scanner
|
|
@@ -32,6 +53,59 @@ gate status. If the scanner can upload analysis but the wait step fails with
|
|
|
32
53
|
`Project not found`, update the `SONAR_TOKEN` permissions or keep
|
|
33
54
|
`SONAR_QUALITY_GATE_WAIT` unset until the token can read the project.
|
|
34
55
|
|
|
56
|
+
## Local SonarQube
|
|
57
|
+
|
|
58
|
+
Open Orchestra includes `docker-compose.sonar.yml` for local SonarQube
|
|
59
|
+
dogfooding:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
docker compose -f docker-compose.sonar.yml up -d
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Open `http://localhost:9000`, complete the SonarQube first-run setup, create a
|
|
66
|
+
project key, and generate a project token. Then run scanner/import commands
|
|
67
|
+
against the local host. Example import after analysis is available:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
SONAR_TOKEN=<local-token> node bin/orchestra.js sonar import \
|
|
71
|
+
--provider sonarqube-local \
|
|
72
|
+
--host-url http://localhost:9000 \
|
|
73
|
+
--project-key open-orchestra \
|
|
74
|
+
--branch main \
|
|
75
|
+
--task GH-368-LOCAL-SONARQUBE-PROVIDER \
|
|
76
|
+
--json
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
HTTP is accepted only for `sonarqube-local` on localhost. Self-hosted and cloud
|
|
80
|
+
hosts must use HTTPS.
|
|
81
|
+
|
|
82
|
+
Sonar reads TypeScript through `tsconfig.sonar.json`, a standalone analyzer
|
|
83
|
+
config that mirrors the build compiler options but lowers only the analyzer
|
|
84
|
+
target to `ES2022`. Keep the main build target unchanged unless runtime support
|
|
85
|
+
changes; the Sonar-specific file exists because SonarQube 9.9 analyzers reject
|
|
86
|
+
newer TypeScript targets such as `ES2023`, including when they appear in an
|
|
87
|
+
extended config.
|
|
88
|
+
|
|
89
|
+
Do not commit local SonarQube data, tokens, database volumes, or exported source
|
|
90
|
+
snippets.
|
|
91
|
+
|
|
92
|
+
## Finding Triage
|
|
93
|
+
|
|
94
|
+
Sonar findings are not automatic fixes. Before remediation, classify each
|
|
95
|
+
finding as one of:
|
|
96
|
+
|
|
97
|
+
- `fix-required`: confirmed defect or maintainability issue that should be
|
|
98
|
+
corrected now.
|
|
99
|
+
- `accepted-risk`: real finding accepted for a documented reason, owner, and
|
|
100
|
+
review date.
|
|
101
|
+
- `false-positive`: analyzer cannot model the actual behavior.
|
|
102
|
+
- `tool-limitation`: edition, language, generated-code, or framework limitation.
|
|
103
|
+
- `deferred-debt`: valid issue intentionally scheduled for a later task.
|
|
104
|
+
|
|
105
|
+
ESLint suppressions and similar static-analysis exceptions must not be removed
|
|
106
|
+
blindly. Validate whether the suppression is still required, can be narrowed,
|
|
107
|
+
should be fixed, or must be accepted with linked rationale.
|
|
108
|
+
|
|
35
109
|
Recommended minimum quality gate for new code:
|
|
36
110
|
|
|
37
111
|
- 0 new blocker or critical issues.
|
package/package.json
CHANGED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Audio/Video Transcription Evidence
|
|
2
|
+
|
|
3
|
+
Transcribe workflow-local audio and video artifacts into reviewable evidence
|
|
4
|
+
without leaking media, secrets, or regulated data.
|
|
5
|
+
|
|
6
|
+
## When To Load
|
|
7
|
+
|
|
8
|
+
- Trigger: `transcription`
|
|
9
|
+
- Trigger: `transcribe`
|
|
10
|
+
- Trigger: `transcript`
|
|
11
|
+
- Trigger: `audio`
|
|
12
|
+
- Trigger: `video`
|
|
13
|
+
- Trigger: `recording`
|
|
14
|
+
- Trigger: `demo recording`
|
|
15
|
+
- Trigger: `sprint review`
|
|
16
|
+
- Trigger: `interview`
|
|
17
|
+
- Trigger: `discovery call`
|
|
18
|
+
- Trigger: `support call`
|
|
19
|
+
- Trigger: `meeting recording`
|
|
20
|
+
- Trigger: `voice note`
|
|
21
|
+
- Trigger: `subtitle`
|
|
22
|
+
- Trigger: `vtt`
|
|
23
|
+
- Trigger: `srt`
|
|
24
|
+
|
|
25
|
+
## Operating Rules
|
|
26
|
+
|
|
27
|
+
1. Treat media as sensitive by default. Do not send audio, video, or raw
|
|
28
|
+
transcript text to an external provider unless an explicit policy opt-in
|
|
29
|
+
allows that provider and the task evidence requires it.
|
|
30
|
+
2. Prefer local/offline engines for first pass transcription. If no approved
|
|
31
|
+
local engine is available, record a degraded evidence note instead of
|
|
32
|
+
silently uploading media elsewhere.
|
|
33
|
+
3. Validate the source artifact before processing:
|
|
34
|
+
- path must be workflow-local or an approved evidence artifact reference;
|
|
35
|
+
- file must be readable and inside configured size/duration limits;
|
|
36
|
+
- format/codec support must be known or explicitly marked degraded.
|
|
37
|
+
4. Record provenance for every transcript:
|
|
38
|
+
- source artifact or workflow-local path;
|
|
39
|
+
- source hash;
|
|
40
|
+
- duration and detected language when available;
|
|
41
|
+
- engine/provider/model;
|
|
42
|
+
- actor, task id, timestamp, and command/API route;
|
|
43
|
+
- consent, retention, and tenant/regulatory notes when supplied.
|
|
44
|
+
5. Redact before persistence. Remove or mask secrets, API keys, tokens,
|
|
45
|
+
credentials, configured PII, health/financial/legal identifiers, and other
|
|
46
|
+
regulated markers from transcript artifacts and summaries.
|
|
47
|
+
6. Keep outputs compact and structured:
|
|
48
|
+
- Markdown report for humans;
|
|
49
|
+
- JSON for tools and evidence linking;
|
|
50
|
+
- VTT/SRT only when timestamp confidence is adequate;
|
|
51
|
+
- raw transcripts should be stored as files, not pasted into handoffs.
|
|
52
|
+
7. Extract workflow findings from transcript content:
|
|
53
|
+
- decisions;
|
|
54
|
+
- risks;
|
|
55
|
+
- action items;
|
|
56
|
+
- acceptance-criteria candidates;
|
|
57
|
+
- defects or support issues;
|
|
58
|
+
- lesson-learned candidates;
|
|
59
|
+
- unresolved questions.
|
|
60
|
+
8. QA evidence must map transcript findings to acceptance criteria and timestamp
|
|
61
|
+
ranges. A transcript alone is not proof unless the relevant behavior or
|
|
62
|
+
decision is referenced with observable evidence.
|
|
63
|
+
|
|
64
|
+
## Failure Modes
|
|
65
|
+
|
|
66
|
+
Fail closed or produce degraded evidence for:
|
|
67
|
+
|
|
68
|
+
- missing `ffmpeg` or local transcription engine;
|
|
69
|
+
- unsupported codec or corrupted media;
|
|
70
|
+
- oversized file or excessive duration;
|
|
71
|
+
- provider policy blocks external transcription;
|
|
72
|
+
- unreadable or non-workflow-local artifact path;
|
|
73
|
+
- redaction engine failure;
|
|
74
|
+
- partial transcript or low timestamp confidence;
|
|
75
|
+
- missing consent/retention requirements in regulated contexts.
|
|
76
|
+
|
|
77
|
+
## Transcript Evidence Template
|
|
78
|
+
|
|
79
|
+
```md
|
|
80
|
+
# Transcript Evidence
|
|
81
|
+
|
|
82
|
+
Task:
|
|
83
|
+
Source artifact:
|
|
84
|
+
Source hash:
|
|
85
|
+
Duration:
|
|
86
|
+
Language:
|
|
87
|
+
Engine/provider/model:
|
|
88
|
+
Actor:
|
|
89
|
+
Generated at:
|
|
90
|
+
Consent/retention:
|
|
91
|
+
Redaction policy:
|
|
92
|
+
|
|
93
|
+
## Acceptance Criteria Mapping
|
|
94
|
+
|
|
95
|
+
| AC | Timestamp | Evidence | Result | Notes |
|
|
96
|
+
| -- | --------- | -------- | ------ | ----- |
|
|
97
|
+
|
|
98
|
+
## Decisions
|
|
99
|
+
|
|
100
|
+
| Timestamp | Decision | Owner | Follow-up |
|
|
101
|
+
| --------- | -------- | ----- | --------- |
|
|
102
|
+
|
|
103
|
+
## Risks / Defects
|
|
104
|
+
|
|
105
|
+
| Timestamp | Finding | Severity | Evidence | Owner |
|
|
106
|
+
| --------- | ------- | -------- | -------- | ----- |
|
|
107
|
+
|
|
108
|
+
## Action Items
|
|
109
|
+
|
|
110
|
+
| Timestamp | Action | Owner | Due |
|
|
111
|
+
| --------- | ------ | ----- | --- |
|
|
112
|
+
|
|
113
|
+
## Lesson Candidates
|
|
114
|
+
|
|
115
|
+
| Timestamp | Lesson candidate | Prevention |
|
|
116
|
+
| --------- | ---------------- | ---------- |
|
|
117
|
+
|
|
118
|
+
## Gaps
|
|
119
|
+
|
|
120
|
+
| Gap | Owner | Rationale |
|
|
121
|
+
| --- | ----- | --------- |
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Evidence
|
|
125
|
+
|
|
126
|
+
- `file`
|
|
127
|
+
- `video`
|
|
128
|
+
- `log`
|
|
129
|
+
- `report`
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "audio-video-transcription",
|
|
3
|
+
"name": "Audio/Video Transcription Evidence",
|
|
4
|
+
"summary": "Transcribe audio and video artifacts into privacy-safe evidence with timestamps, provenance, redaction, and workflow findings.",
|
|
5
|
+
"triggers": [
|
|
6
|
+
"transcription",
|
|
7
|
+
"transcribe",
|
|
8
|
+
"transcript",
|
|
9
|
+
"audio",
|
|
10
|
+
"video",
|
|
11
|
+
"recording",
|
|
12
|
+
"demo recording",
|
|
13
|
+
"sprint review",
|
|
14
|
+
"interview",
|
|
15
|
+
"discovery call",
|
|
16
|
+
"support call",
|
|
17
|
+
"meeting recording",
|
|
18
|
+
"voice note",
|
|
19
|
+
"subtitle",
|
|
20
|
+
"vtt",
|
|
21
|
+
"srt"
|
|
22
|
+
],
|
|
23
|
+
"roles": [
|
|
24
|
+
"business_analyst",
|
|
25
|
+
"product_owner",
|
|
26
|
+
"product_manager",
|
|
27
|
+
"qa",
|
|
28
|
+
"sdet",
|
|
29
|
+
"ux_researcher_accessibility",
|
|
30
|
+
"support_customer_success",
|
|
31
|
+
"technical_writer",
|
|
32
|
+
"developer",
|
|
33
|
+
"architect",
|
|
34
|
+
"security",
|
|
35
|
+
"compliance_privacy"
|
|
36
|
+
],
|
|
37
|
+
"capabilities": [
|
|
38
|
+
"transcription-evidence",
|
|
39
|
+
"media-evidence",
|
|
40
|
+
"privacy-redaction",
|
|
41
|
+
"acceptance-coverage",
|
|
42
|
+
"lesson-capture"
|
|
43
|
+
],
|
|
44
|
+
"riskAreas": [
|
|
45
|
+
"quality",
|
|
46
|
+
"privacy",
|
|
47
|
+
"security",
|
|
48
|
+
"compliance",
|
|
49
|
+
"governance",
|
|
50
|
+
"release"
|
|
51
|
+
],
|
|
52
|
+
"sourceGroups": [
|
|
53
|
+
"quality-security",
|
|
54
|
+
"product-backlog",
|
|
55
|
+
"agent-memory",
|
|
56
|
+
"user-research"
|
|
57
|
+
],
|
|
58
|
+
"evidence": ["file", "video", "log", "report"],
|
|
59
|
+
"loadBudget": "normal",
|
|
60
|
+
"entry": "skills/audio-video-transcription/SKILL.md"
|
|
61
|
+
}
|