agent-relay 4.0.2 → 4.0.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.
- package/bin/agent-relay-broker-darwin-arm64 +0 -0
- package/bin/agent-relay-broker-darwin-x64 +0 -0
- package/bin/agent-relay-broker-linux-arm64 +0 -0
- package/bin/agent-relay-broker-linux-x64 +0 -0
- package/dist/index.cjs +7906 -2084
- package/dist/packages/sdk/src/provisioner/seeder.d.ts +17 -0
- package/dist/packages/sdk/src/provisioner/seeder.d.ts.map +1 -0
- package/dist/packages/sdk/src/provisioner/seeder.js +419 -0
- package/dist/packages/sdk/src/provisioner/seeder.js.map +1 -0
- package/dist/packages/sdk/src/provisioner/token.d.ts +38 -0
- package/dist/packages/sdk/src/provisioner/token.d.ts.map +1 -0
- package/dist/packages/sdk/src/provisioner/token.js +74 -0
- package/dist/packages/sdk/src/provisioner/token.js.map +1 -0
- package/dist/src/cli/commands/core.d.ts.map +1 -1
- package/dist/src/cli/commands/core.js +7 -3
- package/dist/src/cli/commands/core.js.map +1 -1
- package/dist/src/cli/commands/on/provision.d.ts.map +1 -1
- package/dist/src/cli/commands/on/provision.js +8 -3
- package/dist/src/cli/commands/on/provision.js.map +1 -1
- package/dist/src/cli/commands/on/start.d.ts +3 -0
- package/dist/src/cli/commands/on/start.d.ts.map +1 -1
- package/dist/src/cli/commands/on/start.js +113 -84
- package/dist/src/cli/commands/on/start.js.map +1 -1
- package/dist/src/cli/commands/on/symlink-mount.d.ts +12 -0
- package/dist/src/cli/commands/on/symlink-mount.d.ts.map +1 -0
- package/dist/src/cli/commands/on/symlink-mount.js +304 -0
- package/dist/src/cli/commands/on/symlink-mount.js.map +1 -0
- package/dist/src/cli/commands/on.d.ts.map +1 -1
- package/dist/src/cli/commands/on.js +3 -0
- package/dist/src/cli/commands/on.js.map +1 -1
- package/install.sh +4 -0
- package/package.json +9 -9
- package/packages/acp-bridge/package.json +2 -2
- package/packages/brand/package.json +1 -1
- package/packages/cloud/package.json +2 -2
- package/packages/config/package.json +1 -1
- package/packages/hooks/package.json +4 -4
- package/packages/memory/package.json +2 -2
- package/packages/openclaw/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/sdk/dist/client.d.ts +3 -10
- package/packages/sdk/dist/client.d.ts.map +1 -1
- package/packages/sdk/dist/client.js +2 -0
- package/packages/sdk/dist/client.js.map +1 -1
- package/packages/sdk/dist/provisioner/__tests__/audit.test.d.ts +2 -0
- package/packages/sdk/dist/provisioner/__tests__/audit.test.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/audit.test.js +45 -0
- package/packages/sdk/dist/provisioner/__tests__/audit.test.js.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/compiler.test.d.ts +2 -0
- package/packages/sdk/dist/provisioner/__tests__/compiler.test.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/compiler.test.js +345 -0
- package/packages/sdk/dist/provisioner/__tests__/compiler.test.js.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/presets.test.d.ts +2 -0
- package/packages/sdk/dist/provisioner/__tests__/presets.test.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/presets.test.js +23 -0
- package/packages/sdk/dist/provisioner/__tests__/presets.test.js.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/seeder.test.d.ts +2 -0
- package/packages/sdk/dist/provisioner/__tests__/seeder.test.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/seeder.test.js +224 -0
- package/packages/sdk/dist/provisioner/__tests__/seeder.test.js.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/tar-seeder.test.d.ts +2 -0
- package/packages/sdk/dist/provisioner/__tests__/tar-seeder.test.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/tar-seeder.test.js +191 -0
- package/packages/sdk/dist/provisioner/__tests__/tar-seeder.test.js.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/token-factory.test.d.ts +2 -0
- package/packages/sdk/dist/provisioner/__tests__/token-factory.test.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/token-factory.test.js +127 -0
- package/packages/sdk/dist/provisioner/__tests__/token-factory.test.js.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/token.test.d.ts +2 -0
- package/packages/sdk/dist/provisioner/__tests__/token.test.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/__tests__/token.test.js +44 -0
- package/packages/sdk/dist/provisioner/__tests__/token.test.js.map +1 -0
- package/packages/sdk/dist/provisioner/audit.d.ts +19 -0
- package/packages/sdk/dist/provisioner/audit.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/audit.js +74 -0
- package/packages/sdk/dist/provisioner/audit.js.map +1 -0
- package/packages/sdk/dist/provisioner/compiler.d.ts +23 -0
- package/packages/sdk/dist/provisioner/compiler.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/compiler.js +355 -0
- package/packages/sdk/dist/provisioner/compiler.js.map +1 -0
- package/packages/sdk/dist/provisioner/index.d.ts +9 -0
- package/packages/sdk/dist/provisioner/index.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/index.js +266 -0
- package/packages/sdk/dist/provisioner/index.js.map +1 -0
- package/packages/sdk/dist/provisioner/mount.d.ts +14 -0
- package/packages/sdk/dist/provisioner/mount.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/mount.js +329 -0
- package/packages/sdk/dist/provisioner/mount.js.map +1 -0
- package/packages/sdk/dist/provisioner/seeder.d.ts +17 -0
- package/packages/sdk/dist/provisioner/seeder.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/seeder.js +419 -0
- package/packages/sdk/dist/provisioner/seeder.js.map +1 -0
- package/packages/sdk/dist/provisioner/token.d.ts +38 -0
- package/packages/sdk/dist/provisioner/token.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/token.js +74 -0
- package/packages/sdk/dist/provisioner/token.js.map +1 -0
- package/packages/sdk/dist/provisioner/types.d.ts +133 -0
- package/packages/sdk/dist/provisioner/types.d.ts.map +1 -0
- package/packages/sdk/dist/provisioner/types.js +2 -0
- package/packages/sdk/dist/provisioner/types.js.map +1 -0
- package/packages/sdk/dist/relay.d.ts +6 -0
- package/packages/sdk/dist/relay.d.ts.map +1 -1
- package/packages/sdk/dist/relay.js +17 -5
- package/packages/sdk/dist/relay.js.map +1 -1
- package/packages/sdk/dist/types.d.ts +9 -0
- package/packages/sdk/dist/types.d.ts.map +1 -1
- package/packages/sdk/dist/workflows/__tests__/e2e-permissions.test.d.ts +2 -0
- package/packages/sdk/dist/workflows/__tests__/e2e-permissions.test.d.ts.map +1 -0
- package/packages/sdk/dist/workflows/__tests__/e2e-permissions.test.js +331 -0
- package/packages/sdk/dist/workflows/__tests__/e2e-permissions.test.js.map +1 -0
- package/packages/sdk/dist/workflows/__tests__/permission-types.test.d.ts +2 -0
- package/packages/sdk/dist/workflows/__tests__/permission-types.test.d.ts.map +1 -0
- package/packages/sdk/dist/workflows/__tests__/permission-types.test.js +124 -0
- package/packages/sdk/dist/workflows/__tests__/permission-types.test.js.map +1 -0
- package/packages/sdk/dist/workflows/__tests__/permissions-integration.test.d.ts +2 -0
- package/packages/sdk/dist/workflows/__tests__/permissions-integration.test.d.ts.map +1 -0
- package/packages/sdk/dist/workflows/__tests__/permissions-integration.test.js +526 -0
- package/packages/sdk/dist/workflows/__tests__/permissions-integration.test.js.map +1 -0
- package/packages/sdk/dist/workflows/dry-run-format.d.ts.map +1 -1
- package/packages/sdk/dist/workflows/dry-run-format.js +8 -0
- package/packages/sdk/dist/workflows/dry-run-format.js.map +1 -1
- package/packages/sdk/dist/workflows/runner.d.ts +14 -0
- package/packages/sdk/dist/workflows/runner.d.ts.map +1 -1
- package/packages/sdk/dist/workflows/runner.js +455 -6
- package/packages/sdk/dist/workflows/runner.js.map +1 -1
- package/packages/sdk/dist/workflows/types.d.ts +190 -0
- package/packages/sdk/dist/workflows/types.d.ts.map +1 -1
- package/packages/sdk/dist/workflows/types.js +29 -0
- package/packages/sdk/dist/workflows/types.js.map +1 -1
- package/packages/sdk/package.json +6 -2
- package/packages/sdk/src/__tests__/orchestration-upgrades.test.ts +123 -1
- package/packages/sdk/src/__tests__/provisioner-mount.test.ts +126 -0
- package/packages/sdk/src/__tests__/spawn-token.test.ts +41 -0
- package/packages/sdk/src/__tests__/workflow-runner.test.ts +77 -45
- package/packages/sdk/src/client.ts +4 -8
- package/packages/sdk/src/provisioner/__tests__/audit.test.ts +62 -0
- package/packages/sdk/src/provisioner/__tests__/compiler.test.ts +369 -0
- package/packages/sdk/src/provisioner/__tests__/presets.test.ts +25 -0
- package/packages/sdk/src/provisioner/__tests__/seeder.test.ts +284 -0
- package/packages/sdk/src/provisioner/__tests__/tar-seeder.test.ts +249 -0
- package/packages/sdk/src/provisioner/__tests__/token-factory.test.ts +172 -0
- package/packages/sdk/src/provisioner/__tests__/token.test.ts +53 -0
- package/packages/sdk/src/provisioner/audit.ts +104 -0
- package/packages/sdk/src/provisioner/compiler.ts +498 -0
- package/packages/sdk/src/provisioner/index.ts +332 -0
- package/packages/sdk/src/provisioner/mount.ts +419 -0
- package/packages/sdk/src/provisioner/seeder.ts +571 -0
- package/packages/sdk/src/provisioner/token.ts +112 -0
- package/packages/sdk/src/provisioner/types.ts +188 -0
- package/packages/sdk/src/relay.ts +31 -9
- package/packages/sdk/src/types.ts +9 -0
- package/packages/sdk/src/workflows/__tests__/e2e-permissions.test.ts +407 -0
- package/packages/sdk/src/workflows/__tests__/fixtures/.agentignore +2 -0
- package/packages/sdk/src/workflows/__tests__/fixtures/.reader.agentreadonly +2 -0
- package/packages/sdk/src/workflows/__tests__/fixtures/permission-test.yaml +42 -0
- package/packages/sdk/src/workflows/__tests__/permission-types.test.ts +154 -0
- package/packages/sdk/src/workflows/__tests__/permissions-integration.test.ts +649 -0
- package/packages/sdk/src/workflows/builtin-templates/bug-fix.yaml +13 -9
- package/packages/sdk/src/workflows/builtin-templates/code-review.yaml +12 -8
- package/packages/sdk/src/workflows/builtin-templates/competitive.yaml +11 -7
- package/packages/sdk/src/workflows/builtin-templates/documentation.yaml +16 -8
- package/packages/sdk/src/workflows/builtin-templates/feature-dev.yaml +13 -9
- package/packages/sdk/src/workflows/builtin-templates/refactor.yaml +13 -9
- package/packages/sdk/src/workflows/builtin-templates/review-loop.yaml +14 -10
- package/packages/sdk/src/workflows/builtin-templates/security-audit.yaml +19 -9
- package/packages/sdk/src/workflows/dry-run-format.ts +14 -1
- package/packages/sdk/src/workflows/runner.ts +559 -6
- package/packages/sdk/src/workflows/schema.json +204 -114
- package/packages/sdk/src/workflows/types.ts +266 -1
- package/packages/sdk/vitest.config.ts +5 -1
- package/packages/sdk-py/pyproject.toml +1 -1
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
version:
|
|
1
|
+
version: '1.0'
|
|
2
2
|
name: code-review
|
|
3
|
-
description:
|
|
3
|
+
description: 'Blueprint-style parallel code review with deterministic diff capture.'
|
|
4
4
|
swarm:
|
|
5
5
|
pattern: fan-out
|
|
6
6
|
maxConcurrency: 4
|
|
@@ -13,26 +13,30 @@ swarm:
|
|
|
13
13
|
agents:
|
|
14
14
|
- name: lead
|
|
15
15
|
cli: claude
|
|
16
|
-
role:
|
|
16
|
+
role: 'Aggregates review output and final recommendations'
|
|
17
|
+
permissions: { access: full }
|
|
17
18
|
- name: reviewer-architecture
|
|
18
19
|
cli: codex
|
|
19
|
-
role:
|
|
20
|
+
role: 'Assesses architecture and maintainability'
|
|
21
|
+
permissions: { access: readonly }
|
|
20
22
|
interactive: false
|
|
21
23
|
- name: reviewer-correctness
|
|
22
24
|
cli: claude
|
|
23
|
-
role:
|
|
25
|
+
role: 'Assesses correctness and testing'
|
|
26
|
+
permissions: { access: readonly }
|
|
24
27
|
interactive: false
|
|
25
28
|
- name: reviewer-security
|
|
26
29
|
cli: gemini
|
|
27
|
-
role:
|
|
30
|
+
role: 'Assesses security posture and abuse resistance'
|
|
31
|
+
permissions: { access: readonly }
|
|
28
32
|
interactive: false
|
|
29
33
|
workflows:
|
|
30
34
|
- name: parallel-review
|
|
31
|
-
description:
|
|
35
|
+
description: 'Run focused reviews in parallel and synthesize final guidance.'
|
|
32
36
|
onError: fail
|
|
33
37
|
preflight:
|
|
34
38
|
- command: git diff --stat HEAD~1 2>/dev/null || git diff --stat 2>/dev/null || echo "No diff available"
|
|
35
|
-
description:
|
|
39
|
+
description: 'Check there are changes to review'
|
|
36
40
|
steps:
|
|
37
41
|
# Deterministic: Capture diff for review
|
|
38
42
|
- name: capture-diff
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
version:
|
|
1
|
+
version: '1.0'
|
|
2
2
|
name: competitive
|
|
3
|
-
description:
|
|
3
|
+
description: 'Multiple agents independently implement solutions, then compare and select the best approach.'
|
|
4
4
|
swarm:
|
|
5
5
|
pattern: competitive
|
|
6
6
|
maxConcurrency: 4
|
|
@@ -9,19 +9,23 @@ swarm:
|
|
|
9
9
|
agents:
|
|
10
10
|
- name: lead
|
|
11
11
|
cli: claude
|
|
12
|
-
role:
|
|
12
|
+
role: 'Defines spec, judges implementations, and selects winner'
|
|
13
|
+
permissions: { access: readwrite }
|
|
13
14
|
- name: team-alpha
|
|
14
15
|
cli: claude
|
|
15
|
-
role:
|
|
16
|
+
role: 'Independent implementation team A'
|
|
17
|
+
permissions: { access: readwrite }
|
|
16
18
|
- name: team-beta
|
|
17
19
|
cli: codex
|
|
18
|
-
role:
|
|
20
|
+
role: 'Independent implementation team B'
|
|
21
|
+
permissions: { access: readwrite }
|
|
19
22
|
- name: team-gamma
|
|
20
23
|
cli: gemini
|
|
21
|
-
role:
|
|
24
|
+
role: 'Independent implementation team C'
|
|
25
|
+
permissions: { access: readwrite }
|
|
22
26
|
workflows:
|
|
23
27
|
- name: competitive-build
|
|
24
|
-
description:
|
|
28
|
+
description: 'Independent parallel implementations followed by comparison and selection.'
|
|
25
29
|
onError: fail
|
|
26
30
|
steps:
|
|
27
31
|
- name: define-spec
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
version:
|
|
1
|
+
version: '1.0'
|
|
2
2
|
name: documentation
|
|
3
|
-
description:
|
|
3
|
+
description: 'Blueprint-style documentation workflow with deterministic file operations.'
|
|
4
4
|
swarm:
|
|
5
5
|
pattern: handoff
|
|
6
6
|
maxConcurrency: 1
|
|
@@ -13,26 +13,34 @@ swarm:
|
|
|
13
13
|
agents:
|
|
14
14
|
- name: lead
|
|
15
15
|
cli: claude
|
|
16
|
-
role:
|
|
16
|
+
role: 'Owns final editorial sign-off'
|
|
17
17
|
- name: researcher
|
|
18
18
|
cli: codex
|
|
19
|
-
role:
|
|
19
|
+
role: 'Collects technical context and source details'
|
|
20
20
|
interactive: false
|
|
21
21
|
- name: writer
|
|
22
22
|
cli: codex
|
|
23
|
-
role:
|
|
23
|
+
role: 'Drafts user-facing documentation'
|
|
24
|
+
permissions:
|
|
25
|
+
access: readwrite
|
|
26
|
+
files:
|
|
27
|
+
write: ['docs/**', '*.md', 'web/content/**']
|
|
24
28
|
interactive: false
|
|
25
29
|
- name: editor
|
|
26
30
|
cli: claude
|
|
27
|
-
role:
|
|
31
|
+
role: 'Edits for accuracy, clarity, and structure'
|
|
32
|
+
permissions:
|
|
33
|
+
access: readwrite
|
|
34
|
+
files:
|
|
35
|
+
write: ['docs/**', '*.md', 'web/content/**']
|
|
28
36
|
workflows:
|
|
29
37
|
- name: docs-production
|
|
30
|
-
description:
|
|
38
|
+
description: 'Gather context, draft docs, edit, and publish summary.'
|
|
31
39
|
onError: skip
|
|
32
40
|
preflight:
|
|
33
41
|
- command: git status --porcelain
|
|
34
42
|
failIf: non-empty
|
|
35
|
-
description:
|
|
43
|
+
description: 'Ensure working directory is clean'
|
|
36
44
|
steps:
|
|
37
45
|
# Deterministic: List existing docs
|
|
38
46
|
- name: list-docs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
version:
|
|
1
|
+
version: '1.0'
|
|
2
2
|
name: feature-dev
|
|
3
|
-
description:
|
|
3
|
+
description: 'Blueprint-style feature development with deterministic quality gates.'
|
|
4
4
|
swarm:
|
|
5
5
|
pattern: hub-spoke
|
|
6
6
|
maxConcurrency: 2
|
|
@@ -13,28 +13,32 @@ swarm:
|
|
|
13
13
|
agents:
|
|
14
14
|
- name: lead
|
|
15
15
|
cli: claude
|
|
16
|
-
role:
|
|
16
|
+
role: 'Lead engineer coordinating delivery'
|
|
17
|
+
permissions: { access: full }
|
|
17
18
|
- name: planner
|
|
18
19
|
cli: codex
|
|
19
|
-
role:
|
|
20
|
+
role: 'Plans implementation and acceptance criteria'
|
|
21
|
+
permissions: { access: readonly }
|
|
20
22
|
interactive: false
|
|
21
23
|
- name: developer
|
|
22
24
|
cli: codex
|
|
23
|
-
role:
|
|
25
|
+
role: 'Implements planned changes'
|
|
26
|
+
permissions: { access: readwrite }
|
|
24
27
|
interactive: false
|
|
25
28
|
- name: reviewer
|
|
26
29
|
cli: claude
|
|
27
|
-
role:
|
|
30
|
+
role: 'Reviews code quality and release risk'
|
|
31
|
+
permissions: { access: readonly }
|
|
28
32
|
workflows:
|
|
29
33
|
- name: feature-delivery
|
|
30
|
-
description:
|
|
34
|
+
description: 'Plan, implement, review, and finalize a feature request with quality gates.'
|
|
31
35
|
onError: retry
|
|
32
36
|
preflight:
|
|
33
37
|
- command: git status --porcelain
|
|
34
38
|
failIf: non-empty
|
|
35
|
-
description:
|
|
39
|
+
description: 'Ensure working directory is clean'
|
|
36
40
|
- command: npm run type-check 2>/dev/null || echo "skip"
|
|
37
|
-
description:
|
|
41
|
+
description: 'Run type checking if available'
|
|
38
42
|
steps:
|
|
39
43
|
# Agent: Planning
|
|
40
44
|
- name: plan
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
version:
|
|
1
|
+
version: '1.0'
|
|
2
2
|
name: refactor
|
|
3
|
-
description:
|
|
3
|
+
description: 'Blueprint-style refactor workflow with deterministic quality gates.'
|
|
4
4
|
swarm:
|
|
5
5
|
pattern: hierarchical
|
|
6
6
|
maxConcurrency: 2
|
|
@@ -13,28 +13,32 @@ swarm:
|
|
|
13
13
|
agents:
|
|
14
14
|
- name: lead
|
|
15
15
|
cli: claude
|
|
16
|
-
role:
|
|
16
|
+
role: 'Owns scope, sequencing, and acceptance'
|
|
17
|
+
permissions: { access: full }
|
|
17
18
|
- name: architect
|
|
18
19
|
cli: codex
|
|
19
|
-
role:
|
|
20
|
+
role: 'Designs target architecture and migration plan'
|
|
21
|
+
permissions: { access: readwrite }
|
|
20
22
|
interactive: false
|
|
21
23
|
- name: refactorer
|
|
22
24
|
cli: codex
|
|
23
|
-
role:
|
|
25
|
+
role: 'Executes scoped refactor changes'
|
|
26
|
+
permissions: { access: readwrite }
|
|
24
27
|
interactive: false
|
|
25
28
|
- name: tester
|
|
26
29
|
cli: claude
|
|
27
|
-
role:
|
|
30
|
+
role: 'Validates behavior parity and risk'
|
|
31
|
+
permissions: { access: readonly }
|
|
28
32
|
workflows:
|
|
29
33
|
- name: refactor-execution
|
|
30
|
-
description:
|
|
34
|
+
description: 'Analyze current system, design approach, refactor, and validate.'
|
|
31
35
|
onError: retry
|
|
32
36
|
preflight:
|
|
33
37
|
- command: git status --porcelain
|
|
34
38
|
failIf: non-empty
|
|
35
|
-
description:
|
|
39
|
+
description: 'Ensure working directory is clean'
|
|
36
40
|
- command: npm test 2>/dev/null || echo "baseline"
|
|
37
|
-
description:
|
|
41
|
+
description: 'Capture baseline test results'
|
|
38
42
|
steps:
|
|
39
43
|
# Agent: Analyze current design
|
|
40
44
|
- name: analyze
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
version:
|
|
1
|
+
version: '1.0'
|
|
2
2
|
name: review-loop
|
|
3
|
-
description:
|
|
3
|
+
description: 'Implement a task with automated multi-perspective code review loop. Inspired by claude-review-loop pattern.'
|
|
4
4
|
swarm:
|
|
5
5
|
pattern: review-loop
|
|
6
6
|
maxConcurrency: 4
|
|
@@ -13,22 +13,26 @@ swarm:
|
|
|
13
13
|
agents:
|
|
14
14
|
- name: implementer
|
|
15
15
|
cli: claude
|
|
16
|
-
role:
|
|
16
|
+
role: 'Senior developer implementing the task and addressing review feedback'
|
|
17
|
+
permissions: { access: full }
|
|
17
18
|
- name: reviewer-diff
|
|
18
19
|
cli: codex
|
|
19
|
-
role:
|
|
20
|
+
role: 'Code quality reviewer focusing on git diff, tests, and potential bugs'
|
|
21
|
+
permissions: { access: readonly }
|
|
20
22
|
interactive: false
|
|
21
23
|
- name: reviewer-architecture
|
|
22
24
|
cli: claude
|
|
23
|
-
role:
|
|
25
|
+
role: 'Architecture and design reviewer assessing structure and maintainability'
|
|
26
|
+
permissions: { access: readonly }
|
|
24
27
|
interactive: false
|
|
25
28
|
- name: reviewer-security
|
|
26
29
|
cli: codex
|
|
27
|
-
role:
|
|
30
|
+
role: 'Security reviewer checking for OWASP Top 10 vulnerabilities'
|
|
31
|
+
permissions: { access: readonly }
|
|
28
32
|
interactive: false
|
|
29
33
|
workflows:
|
|
30
34
|
- name: review-loop-workflow
|
|
31
|
-
description:
|
|
35
|
+
description: 'Implement task, run parallel reviews, consolidate feedback, and address issues.'
|
|
32
36
|
onError: fail
|
|
33
37
|
steps:
|
|
34
38
|
# Phase 1: Implementation
|
|
@@ -82,7 +86,7 @@ workflows:
|
|
|
82
86
|
- If issues found: REVIEW:ISSUES followed by numbered list of issues
|
|
83
87
|
verification:
|
|
84
88
|
type: output_contains
|
|
85
|
-
value:
|
|
89
|
+
value: 'REVIEW:'
|
|
86
90
|
|
|
87
91
|
- name: review-architecture
|
|
88
92
|
type: agent
|
|
@@ -107,7 +111,7 @@ workflows:
|
|
|
107
111
|
- If issues found: REVIEW:ISSUES followed by numbered list of issues
|
|
108
112
|
verification:
|
|
109
113
|
type: output_contains
|
|
110
|
-
value:
|
|
114
|
+
value: 'REVIEW:'
|
|
111
115
|
|
|
112
116
|
- name: review-security
|
|
113
117
|
type: agent
|
|
@@ -133,7 +137,7 @@ workflows:
|
|
|
133
137
|
- If vulnerabilities found: REVIEW:ISSUES followed by numbered list with severity
|
|
134
138
|
verification:
|
|
135
139
|
type: output_contains
|
|
136
|
-
value:
|
|
140
|
+
value: 'REVIEW:'
|
|
137
141
|
|
|
138
142
|
# Phase 3: Consolidate reviews
|
|
139
143
|
- name: consolidate
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
version:
|
|
1
|
+
version: '1.0'
|
|
2
2
|
name: security-audit
|
|
3
|
-
description:
|
|
3
|
+
description: 'Blueprint-style security assessment with deterministic scanning and agent triage.'
|
|
4
4
|
swarm:
|
|
5
5
|
pattern: pipeline
|
|
6
6
|
maxConcurrency: 1
|
|
@@ -13,26 +13,36 @@ swarm:
|
|
|
13
13
|
agents:
|
|
14
14
|
- name: lead
|
|
15
15
|
cli: claude
|
|
16
|
-
role:
|
|
16
|
+
role: 'Owns final risk sign-off and recommendations'
|
|
17
|
+
permissions: { access: full }
|
|
17
18
|
- name: analyst
|
|
18
19
|
cli: claude
|
|
19
|
-
role:
|
|
20
|
+
role: 'Prioritizes findings and recommends mitigations'
|
|
21
|
+
permissions:
|
|
22
|
+
access: readonly
|
|
23
|
+
files:
|
|
24
|
+
deny: ['.env', 'secrets/**', '*.pem', '*.key']
|
|
20
25
|
- name: remediator
|
|
21
26
|
cli: codex
|
|
22
|
-
role:
|
|
27
|
+
role: 'Implements approved remediations'
|
|
28
|
+
permissions: { access: readwrite }
|
|
23
29
|
interactive: false
|
|
24
30
|
- name: verifier
|
|
25
31
|
cli: gemini
|
|
26
|
-
role:
|
|
32
|
+
role: 'Verifies fixes and residual exposure'
|
|
33
|
+
permissions:
|
|
34
|
+
access: readonly
|
|
35
|
+
files:
|
|
36
|
+
deny: ['.env', 'secrets/**', '*.pem', '*.key']
|
|
27
37
|
workflows:
|
|
28
38
|
- name: audit-pipeline
|
|
29
|
-
description:
|
|
39
|
+
description: 'Scan, triage, remediate, verify, and report security posture.'
|
|
30
40
|
onError: fail
|
|
31
41
|
preflight:
|
|
32
42
|
- command: npm audit --json 2>/dev/null | head -100 || echo "{}"
|
|
33
|
-
description:
|
|
43
|
+
description: 'Run npm audit preflight check'
|
|
34
44
|
- command: git diff --check 2>/dev/null || echo "clean"
|
|
35
|
-
description:
|
|
45
|
+
description: 'Check for whitespace errors'
|
|
36
46
|
steps:
|
|
37
47
|
# Deterministic: Run npm audit
|
|
38
48
|
- name: scan-npm
|
|
@@ -26,7 +26,20 @@ export function formatDryRunReport(report: DryRunReport): string {
|
|
|
26
26
|
for (const agent of report.agents) {
|
|
27
27
|
const stepLabel = agent.stepCount === 1 ? '1 step' : `${agent.stepCount} steps`;
|
|
28
28
|
const cwdInfo = agent.cwd ? ` [cwd: ${agent.cwd}]` : '';
|
|
29
|
-
lines.push(
|
|
29
|
+
lines.push(
|
|
30
|
+
` ${agent.name.padEnd(maxNameLen)} ${agent.cli.padEnd(maxCliLen)} ${stepLabel}${cwdInfo}`
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
lines.push('');
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Permissions
|
|
37
|
+
if (report.permissions && report.permissions.length > 0) {
|
|
38
|
+
lines.push(`Permissions (${report.permissions.length} agents):`);
|
|
39
|
+
for (const perm of report.permissions) {
|
|
40
|
+
lines.push(
|
|
41
|
+
` ${perm.agent}: ${perm.access} (read: ${perm.readPaths}, write: ${perm.writePaths}, deny: ${perm.denyPaths}, scopes: ${perm.scopes}) [${perm.source}]`
|
|
42
|
+
);
|
|
30
43
|
}
|
|
31
44
|
lines.push('');
|
|
32
45
|
}
|