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.
Files changed (222) hide show
  1. package/dist/application/build-generated-files.d.ts +1 -1
  2. package/dist/application/build-generated-files.d.ts.map +1 -1
  3. package/dist/application/build-generated-files.js +4 -3
  4. package/dist/application/build-generated-files.js.map +1 -1
  5. package/dist/application/team.d.ts +19 -14
  6. package/dist/application/team.d.ts.map +1 -1
  7. package/dist/application/team.js +125 -51
  8. package/dist/application/team.js.map +1 -1
  9. package/dist/application/validate-team.d.ts +2 -19
  10. package/dist/application/validate-team.d.ts.map +1 -1
  11. package/dist/application/validate-team.js +38 -48
  12. package/dist/application/validate-team.js.map +1 -1
  13. package/dist/cli/explain.d.ts +1 -0
  14. package/dist/cli/explain.d.ts.map +1 -1
  15. package/dist/cli/explain.js +20 -1
  16. package/dist/cli/explain.js.map +1 -1
  17. package/dist/cli/generate.js +1 -1
  18. package/dist/cli/generate.js.map +1 -1
  19. package/dist/cli/import.d.ts.map +1 -1
  20. package/dist/cli/import.js +74 -33
  21. package/dist/cli/import.js.map +1 -1
  22. package/dist/cli/init.d.ts.map +1 -1
  23. package/dist/cli/init.js +30 -16
  24. package/dist/cli/init.js.map +1 -1
  25. package/dist/cli/manage.d.ts.map +1 -1
  26. package/dist/cli/manage.js +230 -64
  27. package/dist/cli/manage.js.map +1 -1
  28. package/dist/cli/reset.d.ts.map +1 -1
  29. package/dist/cli/reset.js +36 -12
  30. package/dist/cli/reset.js.map +1 -1
  31. package/dist/cli/validate.d.ts.map +1 -1
  32. package/dist/cli/validate.js +6 -8
  33. package/dist/cli/validate.js.map +1 -1
  34. package/dist/core/types.d.ts +8 -7
  35. package/dist/core/types.d.ts.map +1 -1
  36. package/dist/diff/index.d.ts +2 -2
  37. package/dist/diff/index.d.ts.map +1 -1
  38. package/dist/diff/index.js +2 -2
  39. package/dist/diff/index.js.map +1 -1
  40. package/dist/explainer/index.d.ts +2 -1
  41. package/dist/explainer/index.d.ts.map +1 -1
  42. package/dist/explainer/index.js +21 -13
  43. package/dist/explainer/index.js.map +1 -1
  44. package/dist/generator/index.d.ts +2 -2
  45. package/dist/generator/index.d.ts.map +1 -1
  46. package/dist/generator/index.js +16 -5
  47. package/dist/generator/index.js.map +1 -1
  48. package/dist/importer/index.d.ts +1 -0
  49. package/dist/importer/index.d.ts.map +1 -1
  50. package/dist/importer/index.js +178 -16
  51. package/dist/importer/index.js.map +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +2 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/manifest/defaults.d.ts +1 -2
  57. package/dist/manifest/defaults.d.ts.map +1 -1
  58. package/dist/manifest/defaults.js +12 -12
  59. package/dist/manifest/defaults.js.map +1 -1
  60. package/dist/manifest/normalize.d.ts +8 -4
  61. package/dist/manifest/normalize.d.ts.map +1 -1
  62. package/dist/manifest/normalize.js +84 -136
  63. package/dist/manifest/normalize.js.map +1 -1
  64. package/dist/manifest/reader.d.ts +2 -2
  65. package/dist/manifest/reader.d.ts.map +1 -1
  66. package/dist/manifest/reader.js +1 -2
  67. package/dist/manifest/reader.js.map +1 -1
  68. package/dist/manifest/types.d.ts +17 -65
  69. package/dist/manifest/types.d.ts.map +1 -1
  70. package/dist/manifest/types.js.map +1 -1
  71. package/dist/manifest/writer.d.ts +2 -2
  72. package/dist/manifest/writer.d.ts.map +1 -1
  73. package/dist/manifest/writer.js +2 -3
  74. package/dist/manifest/writer.js.map +1 -1
  75. package/dist/presets/index.d.ts +2 -2
  76. package/dist/presets/index.d.ts.map +1 -1
  77. package/dist/presets/index.js +7 -2
  78. package/dist/presets/index.js.map +1 -1
  79. package/dist/presets/types.d.ts +2 -2
  80. package/dist/presets/types.d.ts.map +1 -1
  81. package/dist/renderers/claude/agent-md.js +1 -1
  82. package/dist/renderers/claude/agent-md.js.map +1 -1
  83. package/dist/renderers/claude/docs.js +1 -1
  84. package/dist/renderers/claude/docs.js.map +1 -1
  85. package/dist/renderers/claude/index.d.ts +2 -0
  86. package/dist/renderers/claude/index.d.ts.map +1 -1
  87. package/dist/renderers/claude/index.js +11 -0
  88. package/dist/renderers/claude/index.js.map +1 -1
  89. package/dist/renderers/claude/tools.d.ts +0 -1
  90. package/dist/renderers/claude/tools.d.ts.map +1 -1
  91. package/dist/renderers/claude/tools.js +0 -2
  92. package/dist/renderers/claude/tools.js.map +1 -1
  93. package/dist/renderers/codex/index.d.ts +7 -0
  94. package/dist/renderers/codex/index.d.ts.map +1 -0
  95. package/dist/renderers/codex/index.js +97 -0
  96. package/dist/renderers/codex/index.js.map +1 -0
  97. package/dist/renderers/codex/skill-map.d.ts +8 -0
  98. package/dist/renderers/codex/skill-map.d.ts.map +1 -0
  99. package/dist/renderers/codex/skill-map.js +29 -0
  100. package/dist/renderers/codex/skill-map.js.map +1 -0
  101. package/dist/renderers/codex/tools.d.ts +3 -0
  102. package/dist/renderers/codex/tools.d.ts.map +1 -0
  103. package/dist/renderers/codex/tools.js +8 -0
  104. package/dist/renderers/codex/tools.js.map +1 -0
  105. package/dist/renderers/index.d.ts +3 -0
  106. package/dist/renderers/index.d.ts.map +1 -1
  107. package/dist/renderers/index.js +7 -0
  108. package/dist/renderers/index.js.map +1 -1
  109. package/dist/renderers/registry.d.ts +8 -0
  110. package/dist/renderers/registry.d.ts.map +1 -0
  111. package/dist/renderers/registry.js +22 -0
  112. package/dist/renderers/registry.js.map +1 -0
  113. package/dist/renderers/target-context.d.ts +14 -0
  114. package/dist/renderers/target-context.d.ts.map +1 -0
  115. package/dist/renderers/target-context.js +2 -0
  116. package/dist/renderers/target-context.js.map +1 -0
  117. package/dist/team-templates/presets.d.ts +1 -1
  118. package/dist/team-templates/presets.d.ts.map +1 -1
  119. package/dist/team-templates/roles.d.ts +6 -6
  120. package/dist/team-templates/roles.d.ts.map +1 -1
  121. package/dist/team-templates/roles.js +3 -4
  122. package/dist/team-templates/roles.js.map +1 -1
  123. package/dist/types/manifest.d.ts +8 -5
  124. package/dist/types/manifest.d.ts.map +1 -1
  125. package/dist/types/manifest.js +7 -9
  126. package/dist/types/manifest.js.map +1 -1
  127. package/dist/validator/checks/handoff-graph.d.ts.map +1 -1
  128. package/dist/validator/checks/handoff-graph.js +3 -2
  129. package/dist/validator/checks/handoff-graph.js.map +1 -1
  130. package/dist/validator/checks/instruction-blocks.d.ts.map +1 -1
  131. package/dist/validator/checks/instruction-blocks.js +3 -1
  132. package/dist/validator/checks/instruction-blocks.js.map +1 -1
  133. package/dist/validator/index.d.ts +2 -2
  134. package/dist/validator/index.d.ts.map +1 -1
  135. package/dist/validator/index.js +4 -8
  136. package/dist/validator/index.js.map +1 -1
  137. package/dist/wizard/index.d.ts +2 -0
  138. package/dist/wizard/index.d.ts.map +1 -1
  139. package/dist/wizard/index.js +25 -10
  140. package/dist/wizard/index.js.map +1 -1
  141. package/dist/wizard/steps/agent-customization.d.ts +2 -1
  142. package/dist/wizard/steps/agent-customization.d.ts.map +1 -1
  143. package/dist/wizard/steps/agent-customization.js +67 -29
  144. package/dist/wizard/steps/agent-customization.js.map +1 -1
  145. package/dist/wizard/steps/confirm-generate.d.ts +2 -2
  146. package/dist/wizard/steps/confirm-generate.d.ts.map +1 -1
  147. package/dist/wizard/steps/confirm-generate.js +2 -2
  148. package/dist/wizard/steps/confirm-generate.js.map +1 -1
  149. package/dist/wizard/steps/custom-team.d.ts +3 -2
  150. package/dist/wizard/steps/custom-team.d.ts.map +1 -1
  151. package/dist/wizard/steps/custom-team.js +3 -3
  152. package/dist/wizard/steps/custom-team.js.map +1 -1
  153. package/dist/wizard/steps/target-selection.d.ts +6 -0
  154. package/dist/wizard/steps/target-selection.d.ts.map +1 -0
  155. package/dist/wizard/steps/target-selection.js +27 -0
  156. package/dist/wizard/steps/target-selection.js.map +1 -0
  157. package/dist/wizard/steps/team-selection.d.ts +4 -2
  158. package/dist/wizard/steps/team-selection.d.ts.map +1 -1
  159. package/dist/wizard/steps/team-selection.js +6 -6
  160. package/dist/wizard/steps/team-selection.js.map +1 -1
  161. package/package.json +16 -3
  162. package/schema/teamcast.schema.json +34 -155
  163. package/templates/presets/feature-team.yaml +80 -47
  164. package/templates/presets/research-and-build.yaml +66 -41
  165. package/templates/presets/secure-dev.yaml +87 -56
  166. package/templates/presets/solo-dev.yaml +23 -14
  167. package/dist/cli/manifest-validation.d.ts +0 -13
  168. package/dist/cli/manifest-validation.d.ts.map +0 -1
  169. package/dist/cli/manifest-validation.js +0 -38
  170. package/dist/cli/manifest-validation.js.map +0 -1
  171. package/dist/generator/renderers/agent-md.d.ts +0 -5
  172. package/dist/generator/renderers/agent-md.d.ts.map +0 -1
  173. package/dist/generator/renderers/agent-md.js +0 -66
  174. package/dist/generator/renderers/agent-md.js.map +0 -1
  175. package/dist/generator/renderers/agents-md.d.ts +0 -4
  176. package/dist/generator/renderers/agents-md.d.ts.map +0 -1
  177. package/dist/generator/renderers/agents-md.js +0 -86
  178. package/dist/generator/renderers/agents-md.js.map +0 -1
  179. package/dist/generator/renderers/claude-md.d.ts +0 -4
  180. package/dist/generator/renderers/claude-md.d.ts.map +0 -1
  181. package/dist/generator/renderers/claude-md.js +0 -68
  182. package/dist/generator/renderers/claude-md.js.map +0 -1
  183. package/dist/generator/renderers/codex-config.d.ts +0 -4
  184. package/dist/generator/renderers/codex-config.d.ts.map +0 -1
  185. package/dist/generator/renderers/codex-config.js +0 -145
  186. package/dist/generator/renderers/codex-config.js.map +0 -1
  187. package/dist/generator/renderers/codex-skill-md.d.ts +0 -4
  188. package/dist/generator/renderers/codex-skill-md.d.ts.map +0 -1
  189. package/dist/generator/renderers/codex-skill-md.js +0 -47
  190. package/dist/generator/renderers/codex-skill-md.js.map +0 -1
  191. package/dist/generator/renderers/settings-json.d.ts +0 -5
  192. package/dist/generator/renderers/settings-json.d.ts.map +0 -1
  193. package/dist/generator/renderers/settings-json.js +0 -100
  194. package/dist/generator/renderers/settings-json.js.map +0 -1
  195. package/dist/generator/renderers/skill-md.d.ts +0 -4
  196. package/dist/generator/renderers/skill-md.d.ts.map +0 -1
  197. package/dist/generator/renderers/skill-md.js +0 -44
  198. package/dist/generator/renderers/skill-md.js.map +0 -1
  199. package/dist/generator/state.d.ts +0 -14
  200. package/dist/generator/state.d.ts.map +0 -1
  201. package/dist/generator/state.js +0 -76
  202. package/dist/generator/state.js.map +0 -1
  203. package/dist/generator/targets/claude.d.ts +0 -3
  204. package/dist/generator/targets/claude.d.ts.map +0 -1
  205. package/dist/generator/targets/claude.js +0 -24
  206. package/dist/generator/targets/claude.js.map +0 -1
  207. package/dist/generator/targets/codex.d.ts +0 -3
  208. package/dist/generator/targets/codex.d.ts.map +0 -1
  209. package/dist/generator/targets/codex.js +0 -19
  210. package/dist/generator/targets/codex.js.map +0 -1
  211. package/dist/generator/targets/index.d.ts +0 -4
  212. package/dist/generator/targets/index.d.ts.map +0 -1
  213. package/dist/generator/targets/index.js +0 -10
  214. package/dist/generator/targets/index.js.map +0 -1
  215. package/dist/generator/targets/types.d.ts +0 -8
  216. package/dist/generator/targets/types.d.ts.map +0 -1
  217. package/dist/generator/targets/types.js +0 -2
  218. package/dist/generator/targets/types.js.map +0 -1
  219. package/dist/manifest/compat.d.ts +0 -6
  220. package/dist/manifest/compat.d.ts.map +0 -1
  221. package/dist/manifest/compat.js +0 -56
  222. package/dist/manifest/compat.js.map +0 -1
@@ -1,51 +1,103 @@
1
1
  version: "2"
2
2
  preset_meta:
3
- tags: [security, team, audit]
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 access controls.
9
-
10
- agents:
11
- orchestrator:
12
- claude:
13
- description: Coordinates the team with security-first mindset. Ensures every change goes through security review.
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: [base-read, delegation, no-file-edits, no-commands, no-web]
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
- forge:
22
- handoffs: [planner, developer, security-auditor, reviewer]
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: [base-read, no-file-edits, no-commands, no-web]
29
- skills: [architecture-analysis, planning, threat-modeling]
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: [base-read, file-authoring, command-execution, no-web]
38
- skills: [test-first, clean-code, secure-coding]
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
- security-auditor:
44
- claude:
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: [base-read, command-execution, no-file-edits, no-web]
48
- skills: [security-check, vulnerability-scan]
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: [base-read, command-execution, no-file-edits, no-web]
66
- skills: [code-review]
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: [solo, simple]
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,4 +0,0 @@
1
- import type { TeamCastManifest } from '../../types/manifest.js';
2
- import type { GeneratedFile } from '../types.js';
3
- export declare function renderAgentsMd(manifest: TeamCastManifest): GeneratedFile;
4
- //# sourceMappingURL=agents-md.d.ts.map
@@ -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,4 +0,0 @@
1
- import type { TeamCastManifest } from '../../types/manifest.js';
2
- import type { GeneratedFile } from '../types.js';
3
- export declare function renderClaudeMd(manifest: TeamCastManifest): GeneratedFile;
4
- //# sourceMappingURL=claude-md.d.ts.map
@@ -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,4 +0,0 @@
1
- import type { TeamCastManifest } from '../../types/manifest.js';
2
- import type { GeneratedFile } from '../types.js';
3
- export declare function renderCodexConfigFiles(manifest: TeamCastManifest): GeneratedFile[];
4
- //# sourceMappingURL=codex-config.d.ts.map
@@ -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"}