teamcast 0.6.0 → 0.8.0
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/application/build-generated-files.d.ts +1 -1
- package/dist/application/build-generated-files.d.ts.map +1 -1
- package/dist/application/build-generated-files.js +4 -3
- package/dist/application/build-generated-files.js.map +1 -1
- package/dist/application/team.d.ts +19 -14
- package/dist/application/team.d.ts.map +1 -1
- package/dist/application/team.js +125 -51
- package/dist/application/team.js.map +1 -1
- package/dist/application/validate-team.d.ts +2 -19
- package/dist/application/validate-team.d.ts.map +1 -1
- package/dist/application/validate-team.js +38 -48
- package/dist/application/validate-team.js.map +1 -1
- package/dist/cli/explain.d.ts +1 -0
- package/dist/cli/explain.d.ts.map +1 -1
- package/dist/cli/explain.js +20 -1
- package/dist/cli/explain.js.map +1 -1
- package/dist/cli/generate.js +1 -1
- package/dist/cli/generate.js.map +1 -1
- package/dist/cli/import.d.ts.map +1 -1
- package/dist/cli/import.js +74 -33
- package/dist/cli/import.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +30 -16
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/manage.d.ts.map +1 -1
- package/dist/cli/manage.js +230 -64
- package/dist/cli/manage.js.map +1 -1
- package/dist/cli/reset.d.ts.map +1 -1
- package/dist/cli/reset.js +36 -12
- package/dist/cli/reset.js.map +1 -1
- package/dist/cli/validate.d.ts.map +1 -1
- package/dist/cli/validate.js +6 -8
- package/dist/cli/validate.js.map +1 -1
- package/dist/core/types.d.ts +8 -7
- package/dist/core/types.d.ts.map +1 -1
- package/dist/diff/index.d.ts +2 -2
- package/dist/diff/index.d.ts.map +1 -1
- package/dist/diff/index.js +2 -2
- package/dist/diff/index.js.map +1 -1
- package/dist/explainer/index.d.ts +2 -1
- package/dist/explainer/index.d.ts.map +1 -1
- package/dist/explainer/index.js +21 -13
- package/dist/explainer/index.js.map +1 -1
- package/dist/generator/index.d.ts +2 -2
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +16 -5
- package/dist/generator/index.js.map +1 -1
- package/dist/importer/index.d.ts +1 -0
- package/dist/importer/index.d.ts.map +1 -1
- package/dist/importer/index.js +178 -16
- package/dist/importer/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest/defaults.d.ts +1 -2
- package/dist/manifest/defaults.d.ts.map +1 -1
- package/dist/manifest/defaults.js +12 -12
- package/dist/manifest/defaults.js.map +1 -1
- package/dist/manifest/normalize.d.ts +8 -4
- package/dist/manifest/normalize.d.ts.map +1 -1
- package/dist/manifest/normalize.js +84 -136
- package/dist/manifest/normalize.js.map +1 -1
- package/dist/manifest/reader.d.ts +2 -2
- package/dist/manifest/reader.d.ts.map +1 -1
- package/dist/manifest/reader.js +1 -2
- package/dist/manifest/reader.js.map +1 -1
- package/dist/manifest/types.d.ts +17 -65
- package/dist/manifest/types.d.ts.map +1 -1
- package/dist/manifest/types.js.map +1 -1
- package/dist/manifest/writer.d.ts +2 -2
- package/dist/manifest/writer.d.ts.map +1 -1
- package/dist/manifest/writer.js +2 -3
- package/dist/manifest/writer.js.map +1 -1
- package/dist/presets/index.d.ts +2 -2
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +7 -2
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/types.d.ts +2 -2
- package/dist/presets/types.d.ts.map +1 -1
- package/dist/renderers/claude/agent-md.js +1 -1
- package/dist/renderers/claude/agent-md.js.map +1 -1
- package/dist/renderers/claude/docs.js +1 -1
- package/dist/renderers/claude/docs.js.map +1 -1
- package/dist/renderers/claude/index.d.ts +2 -0
- package/dist/renderers/claude/index.d.ts.map +1 -1
- package/dist/renderers/claude/index.js +11 -0
- package/dist/renderers/claude/index.js.map +1 -1
- package/dist/renderers/claude/tools.d.ts +0 -1
- package/dist/renderers/claude/tools.d.ts.map +1 -1
- package/dist/renderers/claude/tools.js +0 -2
- package/dist/renderers/claude/tools.js.map +1 -1
- package/dist/renderers/codex/index.d.ts +7 -0
- package/dist/renderers/codex/index.d.ts.map +1 -0
- package/dist/renderers/codex/index.js +97 -0
- package/dist/renderers/codex/index.js.map +1 -0
- package/dist/renderers/codex/skill-map.d.ts +8 -0
- package/dist/renderers/codex/skill-map.d.ts.map +1 -0
- package/dist/renderers/codex/skill-map.js +29 -0
- package/dist/renderers/codex/skill-map.js.map +1 -0
- package/dist/renderers/codex/tools.d.ts +3 -0
- package/dist/renderers/codex/tools.d.ts.map +1 -0
- package/dist/renderers/codex/tools.js +8 -0
- package/dist/renderers/codex/tools.js.map +1 -0
- package/dist/renderers/index.d.ts +3 -0
- package/dist/renderers/index.d.ts.map +1 -1
- package/dist/renderers/index.js +7 -0
- package/dist/renderers/index.js.map +1 -1
- package/dist/renderers/registry.d.ts +8 -0
- package/dist/renderers/registry.d.ts.map +1 -0
- package/dist/renderers/registry.js +22 -0
- package/dist/renderers/registry.js.map +1 -0
- package/dist/renderers/target-context.d.ts +14 -0
- package/dist/renderers/target-context.d.ts.map +1 -0
- package/dist/renderers/target-context.js +2 -0
- package/dist/renderers/target-context.js.map +1 -0
- package/dist/team-templates/presets.d.ts +1 -1
- package/dist/team-templates/presets.d.ts.map +1 -1
- package/dist/team-templates/roles.d.ts +6 -6
- package/dist/team-templates/roles.d.ts.map +1 -1
- package/dist/team-templates/roles.js +3 -4
- package/dist/team-templates/roles.js.map +1 -1
- package/dist/types/manifest.d.ts +8 -5
- package/dist/types/manifest.d.ts.map +1 -1
- package/dist/types/manifest.js +7 -9
- package/dist/types/manifest.js.map +1 -1
- package/dist/validator/checks/handoff-graph.d.ts.map +1 -1
- package/dist/validator/checks/handoff-graph.js +3 -2
- package/dist/validator/checks/handoff-graph.js.map +1 -1
- package/dist/validator/checks/instruction-blocks.d.ts.map +1 -1
- package/dist/validator/checks/instruction-blocks.js +3 -1
- package/dist/validator/checks/instruction-blocks.js.map +1 -1
- package/dist/validator/index.d.ts +2 -2
- package/dist/validator/index.d.ts.map +1 -1
- package/dist/validator/index.js +4 -8
- package/dist/validator/index.js.map +1 -1
- package/dist/wizard/index.d.ts +2 -0
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +25 -10
- package/dist/wizard/index.js.map +1 -1
- package/dist/wizard/steps/agent-customization.d.ts +2 -1
- package/dist/wizard/steps/agent-customization.d.ts.map +1 -1
- package/dist/wizard/steps/agent-customization.js +67 -29
- package/dist/wizard/steps/agent-customization.js.map +1 -1
- package/dist/wizard/steps/confirm-generate.d.ts +2 -2
- package/dist/wizard/steps/confirm-generate.d.ts.map +1 -1
- package/dist/wizard/steps/confirm-generate.js +2 -2
- package/dist/wizard/steps/confirm-generate.js.map +1 -1
- package/dist/wizard/steps/custom-team.d.ts +3 -2
- package/dist/wizard/steps/custom-team.d.ts.map +1 -1
- package/dist/wizard/steps/custom-team.js +3 -3
- package/dist/wizard/steps/custom-team.js.map +1 -1
- package/dist/wizard/steps/target-selection.d.ts +6 -0
- package/dist/wizard/steps/target-selection.d.ts.map +1 -0
- package/dist/wizard/steps/target-selection.js +27 -0
- package/dist/wizard/steps/target-selection.js.map +1 -0
- package/dist/wizard/steps/team-selection.d.ts +4 -2
- package/dist/wizard/steps/team-selection.d.ts.map +1 -1
- package/dist/wizard/steps/team-selection.js +6 -6
- package/dist/wizard/steps/team-selection.js.map +1 -1
- package/package.json +16 -3
- package/schema/teamcast.schema.json +34 -155
- package/templates/presets/feature-team.yaml +80 -47
- package/templates/presets/research-and-build.yaml +66 -41
- package/templates/presets/secure-dev.yaml +87 -56
- package/templates/presets/solo-dev.yaml +23 -14
- package/dist/cli/manifest-validation.d.ts +0 -13
- package/dist/cli/manifest-validation.d.ts.map +0 -1
- package/dist/cli/manifest-validation.js +0 -38
- package/dist/cli/manifest-validation.js.map +0 -1
- package/dist/generator/renderers/agent-md.d.ts +0 -5
- package/dist/generator/renderers/agent-md.d.ts.map +0 -1
- package/dist/generator/renderers/agent-md.js +0 -66
- package/dist/generator/renderers/agent-md.js.map +0 -1
- package/dist/generator/renderers/agents-md.d.ts +0 -4
- package/dist/generator/renderers/agents-md.d.ts.map +0 -1
- package/dist/generator/renderers/agents-md.js +0 -86
- package/dist/generator/renderers/agents-md.js.map +0 -1
- package/dist/generator/renderers/claude-md.d.ts +0 -4
- package/dist/generator/renderers/claude-md.d.ts.map +0 -1
- package/dist/generator/renderers/claude-md.js +0 -68
- package/dist/generator/renderers/claude-md.js.map +0 -1
- package/dist/generator/renderers/codex-config.d.ts +0 -4
- package/dist/generator/renderers/codex-config.d.ts.map +0 -1
- package/dist/generator/renderers/codex-config.js +0 -145
- package/dist/generator/renderers/codex-config.js.map +0 -1
- package/dist/generator/renderers/codex-skill-md.d.ts +0 -4
- package/dist/generator/renderers/codex-skill-md.d.ts.map +0 -1
- package/dist/generator/renderers/codex-skill-md.js +0 -47
- package/dist/generator/renderers/codex-skill-md.js.map +0 -1
- package/dist/generator/renderers/settings-json.d.ts +0 -5
- package/dist/generator/renderers/settings-json.d.ts.map +0 -1
- package/dist/generator/renderers/settings-json.js +0 -100
- package/dist/generator/renderers/settings-json.js.map +0 -1
- package/dist/generator/renderers/skill-md.d.ts +0 -4
- package/dist/generator/renderers/skill-md.d.ts.map +0 -1
- package/dist/generator/renderers/skill-md.js +0 -44
- package/dist/generator/renderers/skill-md.js.map +0 -1
- package/dist/generator/state.d.ts +0 -14
- package/dist/generator/state.d.ts.map +0 -1
- package/dist/generator/state.js +0 -76
- package/dist/generator/state.js.map +0 -1
- package/dist/generator/targets/claude.d.ts +0 -3
- package/dist/generator/targets/claude.d.ts.map +0 -1
- package/dist/generator/targets/claude.js +0 -24
- package/dist/generator/targets/claude.js.map +0 -1
- package/dist/generator/targets/codex.d.ts +0 -3
- package/dist/generator/targets/codex.d.ts.map +0 -1
- package/dist/generator/targets/codex.js +0 -19
- package/dist/generator/targets/codex.js.map +0 -1
- package/dist/generator/targets/index.d.ts +0 -4
- package/dist/generator/targets/index.d.ts.map +0 -1
- package/dist/generator/targets/index.js +0 -10
- package/dist/generator/targets/index.js.map +0 -1
- package/dist/generator/targets/types.d.ts +0 -8
- package/dist/generator/targets/types.d.ts.map +0 -1
- package/dist/generator/targets/types.js +0 -2
- package/dist/generator/targets/types.js.map +0 -1
- package/dist/manifest/compat.d.ts +0 -6
- package/dist/manifest/compat.d.ts.map +0 -1
- package/dist/manifest/compat.js +0 -56
- package/dist/manifest/compat.js.map +0 -1
|
@@ -1,51 +1,103 @@
|
|
|
1
1
|
version: "2"
|
|
2
2
|
preset_meta:
|
|
3
|
-
tags:
|
|
3
|
+
tags:
|
|
4
|
+
- security
|
|
5
|
+
- team
|
|
6
|
+
- audit
|
|
4
7
|
min_version: "2"
|
|
5
8
|
project:
|
|
6
9
|
name: placeholder
|
|
7
10
|
preset: secure-dev
|
|
8
|
-
description: High-security team with a dedicated security auditor and strict
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
description: High-security team with a dedicated security auditor and strict
|
|
12
|
+
access controls.
|
|
13
|
+
policies:
|
|
14
|
+
fragments:
|
|
15
|
+
- allow-npm-run
|
|
16
|
+
- allow-npm-test
|
|
17
|
+
- allow-npm-audit
|
|
18
|
+
- allow-git-read
|
|
19
|
+
- allow-git-write
|
|
20
|
+
- ask-git-push
|
|
21
|
+
- deny-destructive-shell
|
|
22
|
+
- deny-network-downloads
|
|
23
|
+
- deny-dynamic-exec
|
|
24
|
+
- deny-env-files
|
|
25
|
+
- sandbox-default
|
|
26
|
+
assertions:
|
|
27
|
+
- rule: require_sandbox_with_execute
|
|
28
|
+
- rule: no_unrestricted_execute
|
|
29
|
+
- rule: deny_skill_for_role
|
|
30
|
+
agent: reviewer
|
|
31
|
+
skill: write_files
|
|
32
|
+
- rule: require_instruction_block
|
|
33
|
+
kind: behavior
|
|
34
|
+
- rule: max_agents
|
|
35
|
+
count: 8
|
|
36
|
+
claude:
|
|
37
|
+
agents:
|
|
38
|
+
orchestrator:
|
|
39
|
+
forge:
|
|
40
|
+
handoffs:
|
|
41
|
+
- planner
|
|
42
|
+
- developer
|
|
43
|
+
- security-auditor
|
|
44
|
+
- reviewer
|
|
45
|
+
description: Coordinates the team with security-first mindset. Ensures every
|
|
46
|
+
change goes through security review.
|
|
14
47
|
model: opus
|
|
15
|
-
capability_traits:
|
|
48
|
+
capability_traits:
|
|
49
|
+
- base-read
|
|
50
|
+
- delegation
|
|
51
|
+
- no-file-edits
|
|
52
|
+
- no-commands
|
|
53
|
+
- no-web
|
|
16
54
|
max_turns: 30
|
|
17
55
|
instruction_fragments:
|
|
18
56
|
- secure-orchestrator-core
|
|
19
57
|
- secure-orchestrator-workflow
|
|
20
58
|
- secure-orchestrator-gate
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
planner:
|
|
25
|
-
claude:
|
|
26
|
-
description: Plans implementation with security considerations in mind. Identifies potential attack surfaces.
|
|
59
|
+
planner:
|
|
60
|
+
description: Plans implementation with security considerations in mind.
|
|
61
|
+
Identifies potential attack surfaces.
|
|
27
62
|
model: sonnet
|
|
28
|
-
capability_traits:
|
|
29
|
-
|
|
63
|
+
capability_traits:
|
|
64
|
+
- base-read
|
|
65
|
+
- no-file-edits
|
|
66
|
+
- no-commands
|
|
67
|
+
- no-web
|
|
68
|
+
skills:
|
|
69
|
+
- architecture-analysis
|
|
70
|
+
- planning
|
|
71
|
+
- threat-modeling
|
|
30
72
|
instruction_fragments:
|
|
31
73
|
- secure-planning
|
|
32
|
-
|
|
33
|
-
developer:
|
|
34
|
-
claude:
|
|
74
|
+
developer:
|
|
35
75
|
description: Implements code securely. Follows OWASP guidelines. No internet access.
|
|
36
76
|
model: sonnet
|
|
37
|
-
capability_traits:
|
|
38
|
-
|
|
77
|
+
capability_traits:
|
|
78
|
+
- base-read
|
|
79
|
+
- file-authoring
|
|
80
|
+
- command-execution
|
|
81
|
+
- no-web
|
|
82
|
+
skills:
|
|
83
|
+
- test-first
|
|
84
|
+
- clean-code
|
|
85
|
+
- secure-coding
|
|
39
86
|
instruction_fragments:
|
|
40
87
|
- secure-development
|
|
41
88
|
- secure-development-tests
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
description: Performs security review of all code changes. Checks for vulnerabilities before code reaches reviewer.
|
|
89
|
+
security-auditor:
|
|
90
|
+
description: Performs security review of all code changes. Checks for
|
|
91
|
+
vulnerabilities before code reaches reviewer.
|
|
46
92
|
model: sonnet
|
|
47
|
-
capability_traits:
|
|
48
|
-
|
|
93
|
+
capability_traits:
|
|
94
|
+
- base-read
|
|
95
|
+
- command-execution
|
|
96
|
+
- no-file-edits
|
|
97
|
+
- no-web
|
|
98
|
+
skills:
|
|
99
|
+
- security-check
|
|
100
|
+
- vulnerability-scan
|
|
49
101
|
instruction_blocks:
|
|
50
102
|
- kind: behavior
|
|
51
103
|
content: |
|
|
@@ -57,37 +109,16 @@ agents:
|
|
|
57
109
|
- Known vulnerable dependencies
|
|
58
110
|
instruction_fragments:
|
|
59
111
|
- security-review-gate
|
|
60
|
-
|
|
61
|
-
reviewer:
|
|
62
|
-
claude:
|
|
112
|
+
reviewer:
|
|
63
113
|
description: Reviews code quality and style after security clearance.
|
|
64
114
|
model: sonnet
|
|
65
|
-
capability_traits:
|
|
66
|
-
|
|
115
|
+
capability_traits:
|
|
116
|
+
- base-read
|
|
117
|
+
- command-execution
|
|
118
|
+
- no-file-edits
|
|
119
|
+
- no-web
|
|
120
|
+
skills:
|
|
121
|
+
- code-review
|
|
67
122
|
instruction_fragments:
|
|
68
123
|
- post-audit-review-core
|
|
69
124
|
- post-audit-review
|
|
70
|
-
|
|
71
|
-
policies:
|
|
72
|
-
fragments:
|
|
73
|
-
- allow-npm-run
|
|
74
|
-
- allow-npm-test
|
|
75
|
-
- allow-npm-audit
|
|
76
|
-
- allow-git-read
|
|
77
|
-
- allow-git-write
|
|
78
|
-
- ask-git-push
|
|
79
|
-
- deny-destructive-shell
|
|
80
|
-
- deny-network-downloads
|
|
81
|
-
- deny-dynamic-exec
|
|
82
|
-
- deny-env-files
|
|
83
|
-
- sandbox-default
|
|
84
|
-
assertions:
|
|
85
|
-
- rule: require_sandbox_with_execute
|
|
86
|
-
- rule: no_unrestricted_execute
|
|
87
|
-
- rule: deny_skill_for_role
|
|
88
|
-
agent: reviewer
|
|
89
|
-
skill: write_files
|
|
90
|
-
- rule: require_instruction_block
|
|
91
|
-
kind: behavior
|
|
92
|
-
- rule: max_agents
|
|
93
|
-
count: 8
|
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
version: "2"
|
|
2
2
|
preset_meta:
|
|
3
|
-
tags:
|
|
3
|
+
tags:
|
|
4
|
+
- solo
|
|
5
|
+
- simple
|
|
4
6
|
min_version: "2"
|
|
5
7
|
project:
|
|
6
8
|
name: placeholder
|
|
7
9
|
preset: solo-dev
|
|
8
10
|
description: Single enhanced developer agent with safe defaults for individual developers.
|
|
9
|
-
|
|
10
|
-
agents:
|
|
11
|
-
developer:
|
|
12
|
-
claude:
|
|
13
|
-
description: Full-stack developer agent. Reads, writes, edits files and runs commands. Use for any development task.
|
|
14
|
-
model: sonnet
|
|
15
|
-
capability_traits: [base-read, file-authoring, command-execution, web-research, delegation]
|
|
16
|
-
skills: [test-first, clean-code, planning]
|
|
17
|
-
instruction_fragments:
|
|
18
|
-
- solo-dev-core
|
|
19
|
-
- solo-dev-workflow
|
|
20
|
-
- solo-dev-style
|
|
21
|
-
|
|
22
11
|
policies:
|
|
23
12
|
fragments:
|
|
24
13
|
- allow-npm-run
|
|
@@ -30,3 +19,23 @@ policies:
|
|
|
30
19
|
- deny-destructive-shell
|
|
31
20
|
- deny-env-files
|
|
32
21
|
- sandbox-default
|
|
22
|
+
claude:
|
|
23
|
+
agents:
|
|
24
|
+
developer:
|
|
25
|
+
description: Full-stack developer agent. Reads, writes, edits files and runs
|
|
26
|
+
commands. Use for any development task.
|
|
27
|
+
model: sonnet
|
|
28
|
+
capability_traits:
|
|
29
|
+
- base-read
|
|
30
|
+
- file-authoring
|
|
31
|
+
- command-execution
|
|
32
|
+
- web-research
|
|
33
|
+
- delegation
|
|
34
|
+
skills:
|
|
35
|
+
- test-first
|
|
36
|
+
- clean-code
|
|
37
|
+
- planning
|
|
38
|
+
instruction_fragments:
|
|
39
|
+
- solo-dev-core
|
|
40
|
+
- solo-dev-workflow
|
|
41
|
+
- solo-dev-style
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { TeamCastManifest } from '../types/manifest.js';
|
|
2
|
-
import type { ValidationResult } from '../validator/types.js';
|
|
3
|
-
export interface ManifestValidationSummary {
|
|
4
|
-
schemaErrors: Array<{
|
|
5
|
-
path: string;
|
|
6
|
-
message: string;
|
|
7
|
-
}>;
|
|
8
|
-
validationResults: ValidationResult[];
|
|
9
|
-
}
|
|
10
|
-
export declare function evaluateManifest(manifest: TeamCastManifest): ManifestValidationSummary;
|
|
11
|
-
export declare function manifestHasBlockingIssues(summary: ManifestValidationSummary): boolean;
|
|
12
|
-
export declare function printManifestValidation(summary: ManifestValidationSummary): void;
|
|
13
|
-
//# sourceMappingURL=manifest-validation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-validation.d.ts","sourceRoot":"","sources":["../../src/cli/manifest-validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,yBAAyB,CAcxF;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAErF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAkBhF"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { validateSchema } from '../manifest/schema-validator.js';
|
|
3
|
-
import { runValidation } from '../validator/index.js';
|
|
4
|
-
import { hasErrors, printValidationReport } from '../validator/reporter.js';
|
|
5
|
-
export function evaluateManifest(manifest) {
|
|
6
|
-
const schema = validateSchema(manifest);
|
|
7
|
-
if (!schema.valid) {
|
|
8
|
-
return {
|
|
9
|
-
schemaErrors: schema.errors,
|
|
10
|
-
validationResults: [],
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
return {
|
|
14
|
-
schemaErrors: [],
|
|
15
|
-
validationResults: runValidation(manifest),
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
export function manifestHasBlockingIssues(summary) {
|
|
19
|
-
return summary.schemaErrors.length > 0 || hasErrors(summary.validationResults);
|
|
20
|
-
}
|
|
21
|
-
export function printManifestValidation(summary) {
|
|
22
|
-
if (summary.schemaErrors.length > 0) {
|
|
23
|
-
console.log('');
|
|
24
|
-
console.log(chalk.red(' [x] Manifest failed schema validation'));
|
|
25
|
-
for (const error of summary.schemaErrors) {
|
|
26
|
-
console.log(chalk.dim(` ${error.path}: ${error.message}`));
|
|
27
|
-
}
|
|
28
|
-
console.log('');
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if (summary.validationResults.length > 0) {
|
|
32
|
-
printValidationReport(summary.validationResults);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
console.log(chalk.green(' [ok] Validation passed'));
|
|
36
|
-
console.log('');
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=manifest-validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-validation.js","sourceRoot":"","sources":["../../src/cli/manifest-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAQ5E,MAAM,UAAU,gBAAgB,CAAC,QAA4B;IAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,iBAAiB,EAAE,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,aAAa,CAAC,QAAQ,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAkC;IAC1E,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAkC;IACxE,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAClE,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig, TeamCastManifest } from '../../types/manifest.js';
|
|
2
|
-
import type { GeneratedFile } from '../types.js';
|
|
3
|
-
export declare function renderAgentMd(agentId: string, agent: AgentConfig): string;
|
|
4
|
-
export declare function renderAllAgentMd(manifest: TeamCastManifest): GeneratedFile[];
|
|
5
|
-
//# sourceMappingURL=agent-md.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-md.d.ts","sourceRoot":"","sources":["../../../src/generator/renderers/agent-md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAiBjD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAuDzE;AAGD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,aAAa,EAAE,CAK9E"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { hasAllowList, MODEL_ID_MAP } from '../../types/manifest.js';
|
|
2
|
-
// Builds YAML frontmatter string from a key-value map
|
|
3
|
-
function buildFrontmatter(fields) {
|
|
4
|
-
const lines = fields
|
|
5
|
-
.filter(([, v]) => v !== undefined && v !== '')
|
|
6
|
-
.map(([k, v]) => `${k}: ${v}`);
|
|
7
|
-
return `---\n${lines.join('\n')}\n---`;
|
|
8
|
-
}
|
|
9
|
-
// Maps model alias to Claude Code model ID
|
|
10
|
-
function resolveModel(model) {
|
|
11
|
-
if (!model || model === 'inherit')
|
|
12
|
-
return undefined;
|
|
13
|
-
return MODEL_ID_MAP[model];
|
|
14
|
-
}
|
|
15
|
-
// Renders a single agent config into a .claude/agents/<name>.md file
|
|
16
|
-
export function renderAgentMd(agentId, agent) {
|
|
17
|
-
// Build frontmatter fields
|
|
18
|
-
const toolsField = agent.tools && hasAllowList(agent.tools)
|
|
19
|
-
? agent.tools.allow.join(',')
|
|
20
|
-
: undefined;
|
|
21
|
-
const frontmatter = buildFrontmatter([
|
|
22
|
-
['name', agentId],
|
|
23
|
-
['description', agent.description],
|
|
24
|
-
['model', resolveModel(agent.model)],
|
|
25
|
-
['tools', toolsField],
|
|
26
|
-
['permissionMode', agent.permission_mode !== 'default' ? agent.permission_mode : undefined],
|
|
27
|
-
]);
|
|
28
|
-
// Build body sections
|
|
29
|
-
const sections = [];
|
|
30
|
-
if (agent.behavior) {
|
|
31
|
-
sections.push(agent.behavior.trim());
|
|
32
|
-
}
|
|
33
|
-
// Skills reference section
|
|
34
|
-
if (agent.skills && agent.skills.length > 0) {
|
|
35
|
-
sections.push(`## Skills\n\nUse the following skills when applicable: ${agent.skills.join(', ')}.`);
|
|
36
|
-
}
|
|
37
|
-
// Delegation section (handoffs)
|
|
38
|
-
if (agent.handoffs && agent.handoffs.length > 0) {
|
|
39
|
-
sections.push(`## Delegation\n\nYou can delegate tasks to the following agents: ${agent.handoffs.join(', ')}.`);
|
|
40
|
-
}
|
|
41
|
-
// Constraints section
|
|
42
|
-
const constraints = [];
|
|
43
|
-
if (agent.max_turns) {
|
|
44
|
-
constraints.push(`- Maximum turns: ${agent.max_turns}`);
|
|
45
|
-
}
|
|
46
|
-
if (agent.tools && hasAllowList(agent.tools) && agent.tools.deny && agent.tools.deny.length > 0) {
|
|
47
|
-
constraints.push(`- Never use the following tools: ${agent.tools.deny.join(', ')}`);
|
|
48
|
-
}
|
|
49
|
-
if (agent.tools && !hasAllowList(agent.tools)) {
|
|
50
|
-
// deny-only variant: list what is denied
|
|
51
|
-
constraints.push(`- Never use the following tools: ${agent.tools.deny.join(', ')}`);
|
|
52
|
-
}
|
|
53
|
-
if (constraints.length > 0) {
|
|
54
|
-
sections.push(`## Constraints\n\n${constraints.join('\n')}`);
|
|
55
|
-
}
|
|
56
|
-
const body = sections.length > 0 ? sections.join('\n\n') : '';
|
|
57
|
-
return `${frontmatter}\n\n${body}`.trimEnd() + '\n';
|
|
58
|
-
}
|
|
59
|
-
// Renders all agents in the manifest
|
|
60
|
-
export function renderAllAgentMd(manifest) {
|
|
61
|
-
return Object.entries(manifest.agents).map(([agentId, agent]) => ({
|
|
62
|
-
path: `.claude/agents/${agentId}.md`,
|
|
63
|
-
content: renderAgentMd(agentId, agent),
|
|
64
|
-
}));
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=agent-md.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-md.js","sourceRoot":"","sources":["../../../src/generator/renderers/agent-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../../src/generator/renderers/agents-md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,aAAa,CA+F1E"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { hasAllowList } from '../../types/manifest.js';
|
|
2
|
-
// Generates AGENTS.md — universal AI agent documentation.
|
|
3
|
-
// Read by Codex, GitHub Copilot, Cursor, and other AI coding tools.
|
|
4
|
-
// Content is tool-agnostic: project structure, conventions, how to contribute.
|
|
5
|
-
export function renderAgentsMd(manifest) {
|
|
6
|
-
const lines = [];
|
|
7
|
-
const { project, agents, policies } = manifest;
|
|
8
|
-
lines.push(`# ${project.name}`);
|
|
9
|
-
lines.push('');
|
|
10
|
-
if (project.description) {
|
|
11
|
-
lines.push(project.description);
|
|
12
|
-
lines.push('');
|
|
13
|
-
}
|
|
14
|
-
// Project structure hint — generic, helps any AI understand the codebase layout
|
|
15
|
-
lines.push('## Project Overview');
|
|
16
|
-
lines.push('');
|
|
17
|
-
lines.push('This project uses a multi-agent architecture managed by AgentForge.');
|
|
18
|
-
lines.push(`Agent configuration: \`agentforge.yaml\` (edit this file, then run \`agentforge generate\`)`);
|
|
19
|
-
lines.push('');
|
|
20
|
-
// Agent roster — who is in the team and what they do
|
|
21
|
-
lines.push('## Agent Roster');
|
|
22
|
-
lines.push('');
|
|
23
|
-
for (const [agentId, agent] of Object.entries(agents)) {
|
|
24
|
-
const model = agent.model ?? manifest.settings?.default_model ?? 'sonnet';
|
|
25
|
-
lines.push(`### ${agentId}`);
|
|
26
|
-
lines.push('');
|
|
27
|
-
lines.push(`**Role:** ${agent.description}`);
|
|
28
|
-
lines.push(`**Model:** ${model}`);
|
|
29
|
-
lines.push('');
|
|
30
|
-
if (agent.tools) {
|
|
31
|
-
if (hasAllowList(agent.tools)) {
|
|
32
|
-
lines.push(`**Allowed tools:** ${agent.tools.allow.join(', ')}`);
|
|
33
|
-
if (agent.tools.deny?.length) {
|
|
34
|
-
lines.push(`**Restricted tools:** ${agent.tools.deny.join(', ')}`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
lines.push(`**Restricted tools:** ${agent.tools.deny.join(', ')}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (agent.handoffs?.length) {
|
|
42
|
-
lines.push(`**Can delegate to:** ${agent.handoffs.join(', ')}`);
|
|
43
|
-
}
|
|
44
|
-
if (agent.skills?.length) {
|
|
45
|
-
lines.push(`**Skills:** ${agent.skills.join(', ')}`);
|
|
46
|
-
}
|
|
47
|
-
lines.push('');
|
|
48
|
-
}
|
|
49
|
-
// Access control summary — useful for any agent to know what's safe to do
|
|
50
|
-
lines.push('## Access Control');
|
|
51
|
-
lines.push('');
|
|
52
|
-
if (policies?.permissions?.allow?.length) {
|
|
53
|
-
lines.push('**Permitted operations:**');
|
|
54
|
-
for (const rule of policies.permissions.allow) {
|
|
55
|
-
lines.push(`- \`${rule}\``);
|
|
56
|
-
}
|
|
57
|
-
lines.push('');
|
|
58
|
-
}
|
|
59
|
-
if (policies?.permissions?.deny?.length) {
|
|
60
|
-
lines.push('**Prohibited operations:**');
|
|
61
|
-
for (const rule of policies.permissions.deny) {
|
|
62
|
-
lines.push(`- \`${rule}\``);
|
|
63
|
-
}
|
|
64
|
-
lines.push('');
|
|
65
|
-
}
|
|
66
|
-
if (policies?.permissions?.ask?.length) {
|
|
67
|
-
lines.push('**Requires confirmation:**');
|
|
68
|
-
for (const rule of policies.permissions.ask) {
|
|
69
|
-
lines.push(`- \`${rule}\``);
|
|
70
|
-
}
|
|
71
|
-
lines.push('');
|
|
72
|
-
}
|
|
73
|
-
if (policies?.network?.allowed_domains?.length) {
|
|
74
|
-
lines.push(`**Network access:** restricted to ${policies.network.allowed_domains.join(', ')}`);
|
|
75
|
-
lines.push('');
|
|
76
|
-
}
|
|
77
|
-
lines.push('---');
|
|
78
|
-
lines.push('');
|
|
79
|
-
lines.push('*Generated by [AgentForge](https://github.com/agentforge/agentforge)*');
|
|
80
|
-
lines.push('');
|
|
81
|
-
return {
|
|
82
|
-
path: 'AGENTS.md',
|
|
83
|
-
content: lines.join('\n'),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=agents-md.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../../src/generator/renderers/agents-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../../src/generator/renderers/claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,aAAa,CA8E1E"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { hasAllowList } from '../../types/manifest.js';
|
|
2
|
-
// Generates CLAUDE.md — instructions for the main Claude Code session.
|
|
3
|
-
// This is the primary mechanism ensuring agents are actually used.
|
|
4
|
-
export function renderClaudeMd(manifest) {
|
|
5
|
-
const lines = [];
|
|
6
|
-
const { project, agents } = manifest;
|
|
7
|
-
lines.push(`# ${project.name}`);
|
|
8
|
-
lines.push('');
|
|
9
|
-
if (project.description) {
|
|
10
|
-
lines.push(project.description);
|
|
11
|
-
lines.push('');
|
|
12
|
-
}
|
|
13
|
-
// Agent team section — the key part that drives delegation
|
|
14
|
-
lines.push('## Agent Team');
|
|
15
|
-
lines.push('');
|
|
16
|
-
lines.push('This project uses a multi-agent setup. Delegate tasks to the appropriate agent:');
|
|
17
|
-
lines.push('');
|
|
18
|
-
lines.push('| Agent | When to use |');
|
|
19
|
-
lines.push('|-------|-------------|');
|
|
20
|
-
for (const [agentId, agent] of Object.entries(agents)) {
|
|
21
|
-
lines.push(`| **${agentId}** | ${agent.description} |`);
|
|
22
|
-
}
|
|
23
|
-
lines.push('');
|
|
24
|
-
// Find orchestrator-like agents (have Task + handoffs) — these are entry points
|
|
25
|
-
const entryPoints = Object.entries(agents).filter(([, agent]) => {
|
|
26
|
-
const hasTask = agent.tools && hasAllowList(agent.tools) && agent.tools.allow.includes('Task');
|
|
27
|
-
const hasHandoffs = agent.handoffs && agent.handoffs.length > 0;
|
|
28
|
-
return hasTask && hasHandoffs;
|
|
29
|
-
});
|
|
30
|
-
if (entryPoints.length > 0) {
|
|
31
|
-
lines.push('### Preferred workflow');
|
|
32
|
-
lines.push('');
|
|
33
|
-
for (const [agentId, agent] of entryPoints) {
|
|
34
|
-
const chain = agent.handoffs ? [agentId, ...agent.handoffs].join(' → ') : agentId;
|
|
35
|
-
lines.push(`For complex tasks, start with **${agentId}**: \`${chain}\``);
|
|
36
|
-
}
|
|
37
|
-
lines.push('');
|
|
38
|
-
lines.push('For simple single-file changes, work directly without delegation.');
|
|
39
|
-
lines.push('');
|
|
40
|
-
}
|
|
41
|
-
// Security boundaries summary
|
|
42
|
-
const policies = manifest.policies;
|
|
43
|
-
if (policies) {
|
|
44
|
-
lines.push('## Security Boundaries');
|
|
45
|
-
lines.push('');
|
|
46
|
-
if (policies.sandbox?.enabled) {
|
|
47
|
-
lines.push('- Sandbox is **enabled**');
|
|
48
|
-
}
|
|
49
|
-
const denied = policies.permissions?.deny ?? [];
|
|
50
|
-
if (denied.length > 0) {
|
|
51
|
-
lines.push(`- Blocked operations: ${denied.join(', ')}`);
|
|
52
|
-
}
|
|
53
|
-
const allowed = policies.permissions?.allow ?? [];
|
|
54
|
-
if (allowed.length > 0) {
|
|
55
|
-
lines.push(`- Allowed shell commands: ${allowed.join(', ')}`);
|
|
56
|
-
}
|
|
57
|
-
lines.push('');
|
|
58
|
-
}
|
|
59
|
-
lines.push('---');
|
|
60
|
-
lines.push('');
|
|
61
|
-
lines.push('*Agent configuration managed by [AgentForge](https://github.com/agentforge/agentforge). Edit `agentforge.yaml` and run `agentforge generate` to update.*');
|
|
62
|
-
lines.push('');
|
|
63
|
-
return {
|
|
64
|
-
path: 'CLAUDE.md',
|
|
65
|
-
content: lines.join('\n'),
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=claude-md.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../../src/generator/renderers/claude-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-config.d.ts","sourceRoot":"","sources":["../../../src/generator/renderers/codex-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,kBAAkB,EAAoB,MAAM,yBAAyB,CAAC;AAEjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0KjD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,aAAa,EAAE,CAOpF"}
|