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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C9D"}
|
package/dist/cli/validate.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { readManifest, ManifestError } from '../manifest/reader.js';
|
|
3
|
-
import {
|
|
4
|
-
import { printValidationReport, hasErrors } from '../validator/reporter.js';
|
|
3
|
+
import { evaluateTeam, teamHasBlockingIssues, printManifestValidation, } from '../application/validate-team.js';
|
|
5
4
|
export function registerValidateCommand(program) {
|
|
6
5
|
program
|
|
7
6
|
.command('validate')
|
|
@@ -30,16 +29,15 @@ export function registerValidateCommand(program) {
|
|
|
30
29
|
}
|
|
31
30
|
throw err;
|
|
32
31
|
}
|
|
33
|
-
const
|
|
34
|
-
const policyAssertionCount = manifest.policies?.assertions?.length ?? 0;
|
|
32
|
+
const validation = evaluateTeam(manifest);
|
|
35
33
|
if (options.format === 'json') {
|
|
36
|
-
process.stdout.write(JSON.stringify(
|
|
34
|
+
process.stdout.write(JSON.stringify(validation.validationResults, null, 2) + '\n');
|
|
37
35
|
}
|
|
38
36
|
else {
|
|
39
|
-
|
|
37
|
+
printManifestValidation(validation);
|
|
40
38
|
}
|
|
41
|
-
const shouldFail =
|
|
42
|
-
(options.strict &&
|
|
39
|
+
const shouldFail = teamHasBlockingIssues(validation) ||
|
|
40
|
+
(options.strict && validation.validationResults.some((result) => result.severity === 'warning'));
|
|
43
41
|
if (shouldFail) {
|
|
44
42
|
process.exit(1);
|
|
45
43
|
}
|
package/dist/cli/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,UAAU,EAAE,sCAAsC,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,CAAC;SAClE,MAAM,CAAC,CAAC,OAA8C,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1B,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;gBACjC,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC3G,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACpD,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;wBACxB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO;4BAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,UAAU,GACd,qBAAqB,CAAC,UAAU,CAAC;YACjC,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC;QAEnG,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { InstructionBlock } from './instructions.js';
|
|
2
2
|
import type { PolicyAssertion } from './assertions.js';
|
|
3
|
-
export type
|
|
3
|
+
export type ReasoningEffort = 'low' | 'medium' | 'high';
|
|
4
4
|
export type PermissionMode = 'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'dontAsk';
|
|
5
5
|
export type AbstractPermission = 'project.commands' | 'tests' | 'git.read' | 'git.write' | 'package.exec' | 'security.audit' | 'git.push' | 'destructive-shell' | 'downloads' | 'dynamic-exec' | 'env.write';
|
|
6
6
|
export interface McpServerConfig {
|
|
@@ -17,8 +17,10 @@ export interface HookEntry {
|
|
|
17
17
|
command: string;
|
|
18
18
|
}
|
|
19
19
|
export interface AgentRuntime {
|
|
20
|
-
/**
|
|
21
|
-
model?:
|
|
20
|
+
/** Target-native model identifier. */
|
|
21
|
+
model?: string;
|
|
22
|
+
/** Target-native reasoning level where supported (e.g. Codex). */
|
|
23
|
+
reasoningEffort?: ReasoningEffort;
|
|
22
24
|
/**
|
|
23
25
|
* Allowed tools. Uses string[] to keep the core platform-agnostic.
|
|
24
26
|
* The Claude renderer layer casts these to CanonicalTool as needed.
|
|
@@ -86,7 +88,6 @@ export interface TeamPolicies {
|
|
|
86
88
|
assertions?: PolicyAssertion[];
|
|
87
89
|
}
|
|
88
90
|
export interface TeamSettings {
|
|
89
|
-
defaultModel?: ModelAlias;
|
|
90
91
|
generateDocs?: boolean;
|
|
91
92
|
generateLocalSettings?: boolean;
|
|
92
93
|
}
|
|
@@ -101,13 +102,13 @@ export interface ProjectConfig {
|
|
|
101
102
|
description?: string;
|
|
102
103
|
}
|
|
103
104
|
/**
|
|
104
|
-
* A fully-normalized team
|
|
105
|
-
*
|
|
105
|
+
* A fully-normalized, target-specific team view used internally after
|
|
106
|
+
* raw manifest defaults, target selection, and normalization.
|
|
106
107
|
* Agents carry a `runtime` block, which distinguishes this type from
|
|
107
108
|
* the raw `TeamCastManifest` loaded directly from YAML.
|
|
108
109
|
*/
|
|
109
110
|
export interface CoreTeam {
|
|
110
|
-
version: '
|
|
111
|
+
version: '2';
|
|
111
112
|
project: ProjectConfig;
|
|
112
113
|
agents: Record<string, CoreAgent>;
|
|
113
114
|
policies?: TeamPolicies;
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/diff/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TeamCastManifest } from '../manifest/types.js';
|
|
2
2
|
export type DiffStatus = 'new' | 'modified' | 'unchanged';
|
|
3
3
|
export interface DiffEntry {
|
|
4
4
|
path: string;
|
|
@@ -6,5 +6,5 @@ export interface DiffEntry {
|
|
|
6
6
|
addedLines?: number;
|
|
7
7
|
removedLines?: number;
|
|
8
8
|
}
|
|
9
|
-
export declare function diffManifest(
|
|
9
|
+
export declare function diffManifest(manifest: TeamCastManifest, cwd: string): DiffEntry[];
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/diff/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;AAE1D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CA2BjF"}
|
package/dist/diff/index.js
CHANGED
|
@@ -2,8 +2,8 @@ import { readFileSync, existsSync } from 'fs';
|
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { generate } from '../generator/index.js';
|
|
4
4
|
import { isUserEditableGeneratedFile } from '../generator/file-policies.js';
|
|
5
|
-
export function diffManifest(
|
|
6
|
-
const expected = generate(
|
|
5
|
+
export function diffManifest(manifest, cwd) {
|
|
6
|
+
const expected = generate(manifest, { cwd, dryRun: true });
|
|
7
7
|
return expected.map((file) => {
|
|
8
8
|
const absPath = join(cwd, file.path);
|
|
9
9
|
if (!existsSync(absPath)) {
|
package/dist/diff/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAW5E,MAAM,UAAU,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAW5E,MAAM,UAAU,YAAY,CAAC,QAA0B,EAAE,GAAW;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAa,EAAE;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACnF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAErF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { CoreTeam } from '../core/types.js';
|
|
2
|
-
|
|
2
|
+
import type { TargetContext } from '../renderers/target-context.js';
|
|
3
|
+
export declare function buildExplanation(team: CoreTeam, targetContext: TargetContext): string;
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/explainer/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/explainer/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAqEpE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,GAAG,MAAM,CA8CrF"}
|
package/dist/explainer/index.js
CHANGED
|
@@ -1,25 +1,33 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
|
|
3
|
-
function formatAgentSection(agentId, agent, defaultModel) {
|
|
2
|
+
function formatAgentSection(agentId, agent, targetContext) {
|
|
4
3
|
const lines = [];
|
|
5
|
-
const model = agent.runtime.model ??
|
|
4
|
+
const model = agent.runtime.model ?? 'unspecified';
|
|
6
5
|
lines.push(` ${chalk.cyan(agentId)} ${chalk.dim(`(${model})`)}`);
|
|
7
6
|
// Description
|
|
8
7
|
if (agent.description) {
|
|
9
8
|
lines.push(` ${chalk.dim('Description:')} ${agent.description}`);
|
|
10
9
|
}
|
|
10
|
+
if (agent.runtime.reasoningEffort) {
|
|
11
|
+
lines.push(` ${chalk.dim('Reasoning effort:')} ${agent.runtime.reasoningEffort}`);
|
|
12
|
+
}
|
|
11
13
|
// Skills (abstract) — reverse-mapped from tools, or from runtime.skills if no tools
|
|
12
14
|
const tools = agent.runtime.tools ?? [];
|
|
13
15
|
if (tools.length > 0) {
|
|
14
|
-
const
|
|
15
|
-
if (
|
|
16
|
-
|
|
16
|
+
const reverseMap = targetContext.reverseMapTools;
|
|
17
|
+
if (reverseMap) {
|
|
18
|
+
const { skills, remainingTools } = reverseMap(tools);
|
|
19
|
+
if (skills.length > 0) {
|
|
20
|
+
lines.push(` ${chalk.dim('Skills:')} ${skills.join(', ')}`);
|
|
21
|
+
}
|
|
22
|
+
// Expanded tools list (all, including unmapped remainders)
|
|
23
|
+
lines.push(` ${chalk.dim('Tools:')} ${tools.join(', ')}`);
|
|
24
|
+
if (remainingTools.length > 0) {
|
|
25
|
+
// Unmapped tools shown for transparency
|
|
26
|
+
lines.push(` ${chalk.dim('Unmapped tools:')} ${remainingTools.join(', ')}`);
|
|
27
|
+
}
|
|
17
28
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (remainingTools.length > 0) {
|
|
21
|
-
// Unmapped tools shown for transparency
|
|
22
|
-
lines.push(` ${chalk.dim('Unmapped tools:')} ${remainingTools.join(', ')}`);
|
|
29
|
+
else {
|
|
30
|
+
lines.push(` ${chalk.dim('Tools:')} ${tools.join(', ')}`);
|
|
23
31
|
}
|
|
24
32
|
}
|
|
25
33
|
// Disallowed tools
|
|
@@ -45,14 +53,14 @@ function formatAgentSection(agentId, agent, defaultModel) {
|
|
|
45
53
|
}
|
|
46
54
|
return lines;
|
|
47
55
|
}
|
|
48
|
-
export function buildExplanation(team) {
|
|
56
|
+
export function buildExplanation(team, targetContext) {
|
|
49
57
|
const lines = [];
|
|
50
58
|
const preset = team.project.preset ? ` (preset: ${team.project.preset})` : '';
|
|
51
59
|
lines.push(chalk.bold(`Project: ${team.project.name}`) + chalk.dim(preset));
|
|
52
60
|
lines.push('');
|
|
53
61
|
lines.push(chalk.bold('Team structure:'));
|
|
54
62
|
for (const [agentId, agent] of Object.entries(team.agents)) {
|
|
55
|
-
lines.push(...formatAgentSection(agentId, agent,
|
|
63
|
+
lines.push(...formatAgentSection(agentId, agent, targetContext));
|
|
56
64
|
lines.push('');
|
|
57
65
|
}
|
|
58
66
|
if (team.policies) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/explainer/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/explainer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CoreTeam } from '../core/types.js';
|
|
2
1
|
import type { TeamCastManifest } from '../manifest/types.js';
|
|
3
2
|
import type { BuildGeneratedOutputsOptions } from '../application/build-generated-files.js';
|
|
4
|
-
|
|
3
|
+
import '../renderers/index.js';
|
|
4
|
+
export declare function generate(manifest: TeamCastManifest, options: BuildGeneratedOutputsOptions): import("../renderers/types.js").RenderedFile[];
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAG5F,OAAO,uBAAuB,CAAC;AAI/B,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,4BAA4B,kDAiBtC"}
|
package/dist/generator/index.js
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import { isCoreTeam } from '../core/guards.js';
|
|
2
1
|
import { applyDefaults } from '../manifest/defaults.js';
|
|
3
2
|
import { buildGeneratedOutputs } from '../application/build-generated-files.js';
|
|
3
|
+
import '../renderers/index.js';
|
|
4
|
+
import { getRegisteredTargetNames, getTarget } from '../renderers/registry.js';
|
|
5
|
+
import { normalizeManifest } from '../manifest/normalize.js';
|
|
4
6
|
export function generate(manifest, options) {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const rawManifest = applyDefaults(manifest);
|
|
8
|
+
const rawManifestRecord = rawManifest;
|
|
9
|
+
const registeredTargets = getRegisteredTargetNames();
|
|
10
|
+
const allGeneratedFiles = [];
|
|
11
|
+
for (const targetName of registeredTargets) {
|
|
12
|
+
if (rawManifestRecord[targetName]) {
|
|
13
|
+
const targetContext = getTarget(targetName);
|
|
14
|
+
const coreTeam = normalizeManifest(rawManifest, targetContext);
|
|
15
|
+
const targetFiles = buildGeneratedOutputs(coreTeam, targetName, options);
|
|
16
|
+
allGeneratedFiles.push(...targetFiles);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return allGeneratedFiles;
|
|
9
20
|
}
|
|
10
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,UAAU,QAAQ,CACtB,QAA0B,EAC1B,OAAqC;IAErC,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,iBAAiB,GAAG,WAAiD,CAAC;IAC5E,MAAM,iBAAiB,GAAG,wBAAwB,EAAE,CAAC;IACrD,MAAM,iBAAiB,GAA6C,EAAE,CAAC;IAEvE,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QAC3C,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACzE,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
|
package/dist/importer/index.d.ts
CHANGED
|
@@ -8,5 +8,6 @@ interface ImportResult {
|
|
|
8
8
|
warnings: ImportWarning[];
|
|
9
9
|
}
|
|
10
10
|
export declare function importFromClaudeDir(cwd: string, projectName: string): ImportResult;
|
|
11
|
+
export declare function importFromCodexDir(cwd: string, projectName: string): ImportResult;
|
|
11
12
|
export {};
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/importer/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/importer/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,QAAQ,EAKT,MAAM,kBAAkB,CAAC;AAa1B,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAkWD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CA0ClF;AAuFD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAuCjF"}
|
package/dist/importer/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { readFileSync, readdirSync, existsSync } from 'fs';
|
|
2
2
|
import { join, basename } from 'path';
|
|
3
3
|
import { parse } from 'yaml';
|
|
4
|
-
import { CLAUDE_CODE_TOOLS } from '../renderers/claude/tools.js';
|
|
5
|
-
import { reverseMapToolsToSkills } from '../renderers/claude/skill-map.js';
|
|
6
4
|
import { normalizePermissionTokens } from '../core/permissions.js';
|
|
5
|
+
import { createClaudeTarget } from '../renderers/claude/index.js';
|
|
6
|
+
import { createCodexTarget } from '../renderers/codex/index.js';
|
|
7
7
|
const LEGACY_MODEL_ID_MAP = {
|
|
8
8
|
'claude-opus-4-6': 'opus',
|
|
9
9
|
'claude-sonnet-4-6': 'sonnet',
|
|
@@ -54,18 +54,18 @@ function inferLegacyHandoffs(body) {
|
|
|
54
54
|
.filter(Boolean);
|
|
55
55
|
return values.length > 0 ? values : undefined;
|
|
56
56
|
}
|
|
57
|
-
function
|
|
57
|
+
function resolveClaudeModel(modelValue) {
|
|
58
58
|
if (typeof modelValue !== 'string' || modelValue.length === 0)
|
|
59
59
|
return undefined;
|
|
60
|
-
if (modelValue === '
|
|
60
|
+
if (modelValue === 'opus' || modelValue === 'sonnet' || modelValue === 'haiku') {
|
|
61
61
|
return modelValue;
|
|
62
62
|
}
|
|
63
63
|
return LEGACY_MODEL_ID_MAP[modelValue];
|
|
64
64
|
}
|
|
65
|
-
function
|
|
66
|
-
return
|
|
65
|
+
function isKnownTool(value, knownTools) {
|
|
66
|
+
return knownTools.includes(value);
|
|
67
67
|
}
|
|
68
|
-
function parseToolList(value) {
|
|
68
|
+
function parseToolList(value, knownTools) {
|
|
69
69
|
const rawTools = Array.isArray(value)
|
|
70
70
|
? value.filter((item) => typeof item === 'string')
|
|
71
71
|
: typeof value === 'string'
|
|
@@ -76,7 +76,7 @@ function parseToolList(value) {
|
|
|
76
76
|
const tools = [];
|
|
77
77
|
for (const raw of rawTools) {
|
|
78
78
|
const canonical = raw === 'Task' ? 'Agent' : raw;
|
|
79
|
-
if (
|
|
79
|
+
if (isKnownTool(canonical, knownTools) && !tools.includes(canonical)) {
|
|
80
80
|
tools.push(canonical);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -106,21 +106,84 @@ function parseMcpServers(value) {
|
|
|
106
106
|
.filter((item) => item.name.length > 0 && item.url.length > 0);
|
|
107
107
|
return servers.length > 0 ? servers : undefined;
|
|
108
108
|
}
|
|
109
|
-
function
|
|
109
|
+
function normalizeLineEndings(value) {
|
|
110
|
+
return value.replace(/\r\n/g, '\n');
|
|
111
|
+
}
|
|
112
|
+
function escapeRegExp(value) {
|
|
113
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
114
|
+
}
|
|
115
|
+
function extractTomlString(content, key) {
|
|
116
|
+
const match = content.match(new RegExp(`^${escapeRegExp(key)}\\s*=\\s*"((?:\\\\.|[^"])*)"`, 'm'));
|
|
117
|
+
if (!match)
|
|
118
|
+
return undefined;
|
|
119
|
+
return match[1]
|
|
120
|
+
.replace(/\\"/g, '"')
|
|
121
|
+
.replace(/\\\\/g, '\\');
|
|
122
|
+
}
|
|
123
|
+
function extractTomlMultiline(content, key) {
|
|
124
|
+
const match = content.match(new RegExp(`${escapeRegExp(key)}\\s*=\\s*"""\\n([\\s\\S]*?)\\n"""`));
|
|
125
|
+
return match ? normalizeLineEndings(match[1]).trim() : undefined;
|
|
126
|
+
}
|
|
127
|
+
function extractMarkdownSection(content, heading) {
|
|
128
|
+
const normalized = normalizeLineEndings(content);
|
|
129
|
+
const match = normalized.match(new RegExp(`## ${escapeRegExp(heading)}\\n\\n([\\s\\S]*?)(?=\\n## |$)`));
|
|
130
|
+
return match?.[1]?.trim() || undefined;
|
|
131
|
+
}
|
|
132
|
+
function parseCommaList(value) {
|
|
133
|
+
if (!value)
|
|
134
|
+
return undefined;
|
|
135
|
+
const items = value
|
|
136
|
+
.split(',')
|
|
137
|
+
.map((entry) => entry.trim().replace(/\.$/, ''))
|
|
138
|
+
.filter(Boolean);
|
|
139
|
+
return items.length > 0 ? items : undefined;
|
|
140
|
+
}
|
|
141
|
+
function stripCodexGeneratedSections(body) {
|
|
142
|
+
if (!body)
|
|
143
|
+
return undefined;
|
|
144
|
+
let nextBody = normalizeLineEndings(body);
|
|
145
|
+
if (nextBody.startsWith('You are ')) {
|
|
146
|
+
const firstBreak = nextBody.indexOf('\n\n');
|
|
147
|
+
nextBody = firstBreak === -1 ? '' : nextBody.slice(firstBreak + 2);
|
|
148
|
+
}
|
|
149
|
+
for (const section of ['## Delegation', '## Allowed Tool Intents', '## Restricted Tool Intents', '## Skill Docs']) {
|
|
150
|
+
const sectionIndex = nextBody.indexOf(section);
|
|
151
|
+
if (sectionIndex !== -1) {
|
|
152
|
+
const nextSection = nextBody.indexOf('\n## ', sectionIndex + section.length);
|
|
153
|
+
nextBody = nextSection !== -1
|
|
154
|
+
? nextBody.slice(0, sectionIndex) + nextBody.slice(nextSection)
|
|
155
|
+
: nextBody.slice(0, sectionIndex);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return nextBody.trim() || undefined;
|
|
159
|
+
}
|
|
160
|
+
function parseCodexReasoningEffort(value) {
|
|
161
|
+
if (!value)
|
|
162
|
+
return undefined;
|
|
163
|
+
if (value === 'low' || value === 'medium' || value === 'high') {
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
function parseAgentFile(filePath, targetContext) {
|
|
110
169
|
const warnings = [];
|
|
111
170
|
const content = readFileSync(filePath, 'utf-8');
|
|
112
171
|
const fields = parseFrontmatter(content);
|
|
113
172
|
const fileName = basename(filePath, '.md');
|
|
114
173
|
const name = typeof fields.name === 'string' && fields.name.length > 0 ? fields.name : fileName;
|
|
115
|
-
const model =
|
|
116
|
-
const rawTools = parseToolList(fields.tools);
|
|
174
|
+
const model = resolveClaudeModel(fields.model);
|
|
175
|
+
const rawTools = parseToolList(fields.tools, targetContext.knownTools);
|
|
117
176
|
const tools = rawTools
|
|
118
177
|
? (() => {
|
|
119
|
-
const
|
|
120
|
-
|
|
178
|
+
const reverseMap = targetContext.reverseMapTools;
|
|
179
|
+
if (reverseMap) {
|
|
180
|
+
const { skills, remainingTools } = reverseMap(rawTools);
|
|
181
|
+
return [...skills, ...remainingTools];
|
|
182
|
+
}
|
|
183
|
+
return rawTools;
|
|
121
184
|
})()
|
|
122
185
|
: undefined;
|
|
123
|
-
const disallowedTools = parseToolList(fields.disallowedTools);
|
|
186
|
+
const disallowedTools = parseToolList(fields.disallowedTools, targetContext.knownTools);
|
|
124
187
|
const permissionMode = parsePermissionMode(fields.permissionMode);
|
|
125
188
|
const maxTurns = typeof fields.maxTurns === 'number' ? fields.maxTurns : undefined;
|
|
126
189
|
const background = typeof fields.background === 'boolean' ? fields.background : undefined;
|
|
@@ -257,12 +320,13 @@ function parseSettingsJson(filePath) {
|
|
|
257
320
|
export function importFromClaudeDir(cwd, projectName) {
|
|
258
321
|
const warnings = [];
|
|
259
322
|
const agents = {};
|
|
323
|
+
const claudeTarget = createClaudeTarget();
|
|
260
324
|
const agentsDir = join(cwd, '.claude', 'agents');
|
|
261
325
|
if (existsSync(agentsDir)) {
|
|
262
326
|
const files = readdirSync(agentsDir).filter((file) => file.endsWith('.md'));
|
|
263
327
|
for (const file of files) {
|
|
264
328
|
const filePath = join(agentsDir, file);
|
|
265
|
-
const result = parseAgentFile(filePath);
|
|
329
|
+
const result = parseAgentFile(filePath, claudeTarget);
|
|
266
330
|
agents[result.name] = result.agent;
|
|
267
331
|
warnings.push(...result.warnings);
|
|
268
332
|
}
|
|
@@ -284,7 +348,105 @@ export function importFromClaudeDir(cwd, projectName) {
|
|
|
284
348
|
agents,
|
|
285
349
|
policies,
|
|
286
350
|
settings: {
|
|
287
|
-
|
|
351
|
+
generateDocs: true,
|
|
352
|
+
generateLocalSettings: true,
|
|
353
|
+
},
|
|
354
|
+
},
|
|
355
|
+
warnings,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
function parseCodexConfigEntries(filePath) {
|
|
359
|
+
const content = normalizeLineEndings(readFileSync(filePath, 'utf-8'));
|
|
360
|
+
const sectionRegex = /\[agents\.([^\]]+)\]\n([\s\S]*?)(?=\n\[agents\.|\s*$)/g;
|
|
361
|
+
const entries = [];
|
|
362
|
+
for (const match of content.matchAll(sectionRegex)) {
|
|
363
|
+
const name = match[1];
|
|
364
|
+
const block = match[2];
|
|
365
|
+
const description = extractTomlString(block, 'description');
|
|
366
|
+
const configPath = extractTomlString(block, 'config_file');
|
|
367
|
+
if (description && configPath) {
|
|
368
|
+
entries.push({ name, description, configPath });
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return entries;
|
|
372
|
+
}
|
|
373
|
+
function parseCodexToolList(value, knownTools) {
|
|
374
|
+
const items = parseCommaList(value);
|
|
375
|
+
if (!items)
|
|
376
|
+
return undefined;
|
|
377
|
+
const tools = items.filter((item) => knownTools.includes(item));
|
|
378
|
+
return tools.length > 0 ? tools : undefined;
|
|
379
|
+
}
|
|
380
|
+
function parseCodexAgentFile(cwd, entry, targetContext) {
|
|
381
|
+
const warnings = [];
|
|
382
|
+
const filePath = join(cwd, '.codex', entry.configPath);
|
|
383
|
+
const content = normalizeLineEndings(readFileSync(filePath, 'utf-8'));
|
|
384
|
+
const developerInstructions = extractTomlMultiline(content, 'developer_instructions');
|
|
385
|
+
const delegation = extractMarkdownSection(developerInstructions ?? '', 'Delegation');
|
|
386
|
+
const allowedToolIntents = extractMarkdownSection(developerInstructions ?? '', 'Allowed Tool Intents');
|
|
387
|
+
const restrictedToolIntents = extractMarkdownSection(developerInstructions ?? '', 'Restricted Tool Intents');
|
|
388
|
+
const skillDocsSection = extractMarkdownSection(developerInstructions ?? '', 'Skill Docs');
|
|
389
|
+
const reasoningEffort = parseCodexReasoningEffort(extractTomlString(content, 'model_reasoning_effort'));
|
|
390
|
+
if (extractTomlString(content, 'model_reasoning_effort') && !reasoningEffort) {
|
|
391
|
+
warnings.push({
|
|
392
|
+
file: filePath,
|
|
393
|
+
message: `Unknown reasoning effort "${String(extractTomlString(content, 'model_reasoning_effort'))}", skipping`,
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
const handoffs = parseCommaList(delegation?.replace(/^You may delegate to:\s*/i, ''));
|
|
397
|
+
const tools = parseCodexToolList(allowedToolIntents, targetContext.knownTools);
|
|
398
|
+
const disallowedTools = parseCodexToolList(restrictedToolIntents?.replace(/^Avoid using:\s*/i, ''), targetContext.knownTools);
|
|
399
|
+
const skillDocs = parseCommaList(skillDocsSection?.replace(/^Follow these local skills when relevant:\s*/i, ''));
|
|
400
|
+
return {
|
|
401
|
+
name: entry.name,
|
|
402
|
+
agent: {
|
|
403
|
+
id: entry.name,
|
|
404
|
+
description: entry.description,
|
|
405
|
+
runtime: {
|
|
406
|
+
model: extractTomlString(content, 'model'),
|
|
407
|
+
reasoningEffort,
|
|
408
|
+
tools,
|
|
409
|
+
disallowedTools,
|
|
410
|
+
skillDocs,
|
|
411
|
+
},
|
|
412
|
+
instructions: stripCodexGeneratedSections(developerInstructions)
|
|
413
|
+
? [{ kind: 'behavior', content: stripCodexGeneratedSections(developerInstructions) }]
|
|
414
|
+
: [],
|
|
415
|
+
metadata: handoffs?.length ? { handoffs } : undefined,
|
|
416
|
+
},
|
|
417
|
+
warnings,
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
export function importFromCodexDir(cwd, projectName) {
|
|
421
|
+
const warnings = [];
|
|
422
|
+
const agents = {};
|
|
423
|
+
const codexTarget = createCodexTarget();
|
|
424
|
+
const configPath = join(cwd, '.codex', 'config.toml');
|
|
425
|
+
if (!existsSync(configPath)) {
|
|
426
|
+
warnings.push({ file: configPath, message: 'No .codex/config.toml file found' });
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
const entries = parseCodexConfigEntries(configPath);
|
|
430
|
+
for (const entry of entries) {
|
|
431
|
+
const agentPath = join(cwd, '.codex', entry.configPath);
|
|
432
|
+
if (!existsSync(agentPath)) {
|
|
433
|
+
warnings.push({ file: agentPath, message: `Missing config for agent "${entry.name}"` });
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
const result = parseCodexAgentFile(cwd, entry, codexTarget);
|
|
437
|
+
agents[result.name] = result.agent;
|
|
438
|
+
warnings.push(...result.warnings);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
if (Object.keys(agents).length === 0) {
|
|
442
|
+
warnings.push({ file: join(cwd, '.codex', 'agents'), message: 'No agent .toml files found in .codex/agents/' });
|
|
443
|
+
}
|
|
444
|
+
return {
|
|
445
|
+
team: {
|
|
446
|
+
version: '2',
|
|
447
|
+
project: { name: projectName },
|
|
448
|
+
agents,
|
|
449
|
+
settings: {
|
|
288
450
|
generateDocs: true,
|
|
289
451
|
generateLocalSettings: true,
|
|
290
452
|
},
|