teamcast 0.8.0 → 0.9.1
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/team.d.ts.map +1 -1
- package/dist/application/team.js +56 -29
- package/dist/application/team.js.map +1 -1
- package/dist/cli/import.d.ts.map +1 -1
- package/dist/cli/import.js +12 -11
- package/dist/cli/import.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +5 -0
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/manage.d.ts.map +1 -1
- package/dist/cli/manage.js +40 -86
- package/dist/cli/manage.js.map +1 -1
- package/dist/components/policy-fragments.d.ts +1 -1
- package/dist/components/policy-fragments.d.ts.map +1 -1
- package/dist/components/policy-fragments.js +12 -49
- package/dist/components/policy-fragments.js.map +1 -1
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +0 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/types.d.ts +2 -6
- package/dist/core/types.d.ts.map +1 -1
- package/dist/detector/index.d.ts +0 -2
- package/dist/detector/index.d.ts.map +1 -1
- package/dist/detector/index.js +4 -10
- package/dist/detector/index.js.map +1 -1
- package/dist/explainer/index.js +8 -8
- package/dist/explainer/index.js.map +1 -1
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +2 -0
- package/dist/generator/index.js.map +1 -1
- package/dist/importer/index.d.ts +2 -2
- package/dist/importer/index.d.ts.map +1 -1
- package/dist/importer/index.js +82 -28
- package/dist/importer/index.js.map +1 -1
- package/dist/manifest/normalize.d.ts.map +1 -1
- package/dist/manifest/normalize.js +13 -25
- package/dist/manifest/normalize.js.map +1 -1
- package/dist/manifest/reader.d.ts.map +1 -1
- package/dist/manifest/reader.js +4 -2
- package/dist/manifest/reader.js.map +1 -1
- package/dist/manifest/schema-validator.d.ts.map +1 -1
- package/dist/manifest/schema-validator.js +4 -2
- package/dist/manifest/schema-validator.js.map +1 -1
- package/dist/manifest/types.d.ts +7 -4
- package/dist/manifest/types.d.ts.map +1 -1
- package/dist/manifest/types.js.map +1 -1
- package/dist/plugins/core/models-plugin.d.ts +3 -0
- package/dist/plugins/core/models-plugin.d.ts.map +1 -0
- package/dist/plugins/core/models-plugin.js +50 -0
- package/dist/plugins/core/models-plugin.js.map +1 -0
- package/dist/plugins/core/tools-plugin.d.ts +3 -0
- package/dist/plugins/core/tools-plugin.d.ts.map +1 -0
- package/dist/plugins/core/tools-plugin.js +44 -0
- package/dist/plugins/core/tools-plugin.js.map +1 -0
- package/dist/plugins/environments/node-env-plugin.d.ts +3 -0
- package/dist/plugins/environments/node-env-plugin.d.ts.map +1 -0
- package/dist/plugins/environments/node-env-plugin.js +31 -0
- package/dist/plugins/environments/node-env-plugin.js.map +1 -0
- package/dist/plugins/environments/python-env-plugin.d.ts +3 -0
- package/dist/plugins/environments/python-env-plugin.d.ts.map +1 -0
- package/dist/plugins/environments/python-env-plugin.js +33 -0
- package/dist/plugins/environments/python-env-plugin.js.map +1 -0
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +13 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/inject.d.ts +3 -0
- package/dist/plugins/inject.d.ts.map +1 -0
- package/dist/plugins/inject.js +16 -0
- package/dist/plugins/inject.js.map +1 -0
- package/dist/plugins/merge-policies.d.ts +8 -0
- package/dist/plugins/merge-policies.d.ts.map +1 -0
- package/dist/plugins/merge-policies.js +56 -0
- package/dist/plugins/merge-policies.js.map +1 -0
- package/dist/plugins/registry.d.ts +21 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +63 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/types.d.ts +71 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/renderers/claude/policy-mapper.d.ts.map +1 -1
- package/dist/renderers/claude/policy-mapper.js +3 -22
- package/dist/renderers/claude/policy-mapper.js.map +1 -1
- package/dist/team-templates/policies.d.ts.map +1 -1
- package/dist/team-templates/policies.js +0 -12
- package/dist/team-templates/policies.js.map +1 -1
- package/dist/team-templates/roles.d.ts +9 -2
- package/dist/team-templates/roles.d.ts.map +1 -1
- package/dist/team-templates/roles.js +40 -8
- package/dist/team-templates/roles.js.map +1 -1
- package/dist/tools/types.d.ts +5 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/validator/checks/security-baseline.d.ts.map +1 -1
- package/dist/validator/checks/security-baseline.js +4 -19
- package/dist/validator/checks/security-baseline.js.map +1 -1
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +13 -0
- package/dist/wizard/index.js.map +1 -1
- package/dist/wizard/steps/agent-customization.d.ts.map +1 -1
- package/dist/wizard/steps/agent-customization.js +27 -28
- package/dist/wizard/steps/agent-customization.js.map +1 -1
- package/package.json +2 -1
- package/schema/teamcast.schema.json +10 -2
- package/templates/presets/feature-team.yaml +0 -2
- package/templates/presets/research-and-build.yaml +0 -2
- package/templates/presets/secure-dev.yaml +0 -3
- package/templates/presets/solo-dev.yaml +0 -3
- package/dist/core/permissions.d.ts +0 -10
- package/dist/core/permissions.d.ts.map +0 -1
- package/dist/core/permissions.js +0 -67
- package/dist/core/permissions.js.map +0 -1
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
function hasDotEnvDeny(team) {
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
if (abstractDeny.includes('env.write')) {
|
|
5
|
-
return true;
|
|
6
|
-
}
|
|
7
|
-
return rawDeny.some((rule) => {
|
|
2
|
+
const deny = team.policies?.permissions?.rules?.deny ?? [];
|
|
3
|
+
return deny.some((rule) => {
|
|
8
4
|
const lower = rule.toLowerCase();
|
|
9
5
|
return lower.includes('.env') || /write\(.*\.env/i.test(lower) || /edit\(.*\.env/i.test(lower);
|
|
10
6
|
});
|
|
@@ -35,18 +31,7 @@ export const checkSecurityBaseline = (team) => {
|
|
|
35
31
|
});
|
|
36
32
|
}
|
|
37
33
|
}
|
|
38
|
-
const
|
|
39
|
-
const allow = team.policies?.permissions?.rawRules?.allow ?? [];
|
|
40
|
-
const dangerousAbstractPermissions = ['destructive-shell', 'dynamic-exec', 'env.write'];
|
|
41
|
-
for (const permission of abstractAllow) {
|
|
42
|
-
if (dangerousAbstractPermissions.includes(permission)) {
|
|
43
|
-
results.push({
|
|
44
|
-
severity: 'warning',
|
|
45
|
-
category: 'Security',
|
|
46
|
-
message: `Allow permissions include high-risk capability "${permission}"`,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
34
|
+
const allow = team.policies?.permissions?.rules?.allow ?? [];
|
|
50
35
|
for (const rule of allow) {
|
|
51
36
|
if (rule.includes('dangerously-skip-permissions')) {
|
|
52
37
|
results.push({
|
|
@@ -56,7 +41,7 @@ export const checkSecurityBaseline = (team) => {
|
|
|
56
41
|
});
|
|
57
42
|
}
|
|
58
43
|
}
|
|
59
|
-
const dangerousPatterns = ['rm -rf', 'git push --force', 'chmod 777', 'sudo'];
|
|
44
|
+
const dangerousPatterns = ['rm -rf', 'git push --force', 'chmod 777', 'sudo', 'eval(', 'exec('];
|
|
60
45
|
for (const rule of allow) {
|
|
61
46
|
for (const pattern of dangerousPatterns) {
|
|
62
47
|
if (rule.toLowerCase().includes(pattern)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-baseline.js","sourceRoot":"","sources":["../../../src/validator/checks/security-baseline.ts"],"names":[],"mappings":"AAGA,SAAS,aAAa,CAAC,IAAc;IACnC,MAAM,
|
|
1
|
+
{"version":3,"file":"security-baseline.js","sourceRoot":"","sources":["../../../src/validator/checks/security-baseline.ts"],"names":[],"mappings":"AAGA,SAAS,aAAa,CAAC,IAAc;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;IAE3D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAY,CAC5C,IAAc,EACM,EAAE;IACtB,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,6FAA6F;SACvG,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,iEAAiE;SAC3E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,mBAAmB,EAAE,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,UAAU,OAAO,8EAA8E;gBACxG,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;IAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,wDAAwD,IAAI,sBAAsB;aAC5F,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC;oBACX,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,UAAU;oBACpB,OAAO,EAAE,iCAAiC,IAAI,GAAG;iBAClD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAqBlE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFrE"}
|
package/dist/wizard/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { stepAgentCustomization } from './steps/agent-customization.js';
|
|
|
10
10
|
import { normalizeManifest, replaceManifestTarget } from '../manifest/normalize.js';
|
|
11
11
|
import { getTarget, getRegisteredTargetNames } from '../renderers/registry.js';
|
|
12
12
|
import { evaluateTeam, teamHasBlockingIssues, printManifestValidation } from '../application/validate-team.js';
|
|
13
|
+
import { defaultRegistry } from '../plugins/index.js';
|
|
13
14
|
import { printSuccess, printError, printHeader, printCommandSuccess, printNextSteps, } from '../utils/chalk-helpers.js';
|
|
14
15
|
export async function runWizard(options) {
|
|
15
16
|
const { cwd, skipConfirm = false, nonInteractive = false, targetSelection } = options;
|
|
@@ -23,16 +24,28 @@ export async function runWizard(options) {
|
|
|
23
24
|
defaultSelection: targetSelection,
|
|
24
25
|
});
|
|
25
26
|
let rawManifest = await stepTeamSelection(projectPartial, selection, { nonInteractive });
|
|
27
|
+
const activeTargetNames = getRegisteredTargetNames().filter((targetName) => {
|
|
28
|
+
const rawManifestRecord = rawManifest;
|
|
29
|
+
return Boolean(rawManifestRecord[targetName]);
|
|
30
|
+
});
|
|
26
31
|
for (const targetName of getRegisteredTargetNames()) {
|
|
27
32
|
const rawManifestRecord = rawManifest;
|
|
28
33
|
if (!rawManifestRecord[targetName]) {
|
|
29
34
|
continue;
|
|
30
35
|
}
|
|
36
|
+
if (!nonInteractive && activeTargetNames.length > 1) {
|
|
37
|
+
console.log('');
|
|
38
|
+
console.log(chalk.bold(`Customize ${targetName} target`));
|
|
39
|
+
}
|
|
31
40
|
const targetContext = getTarget(targetName);
|
|
32
41
|
const normalizedTeam = normalizeManifest(rawManifest, targetContext);
|
|
33
42
|
const customizedTeam = await stepAgentCustomization(normalizedTeam, targetContext, { nonInteractive });
|
|
34
43
|
rawManifest = replaceManifestTarget(rawManifest, targetName, customizedTeam);
|
|
35
44
|
}
|
|
45
|
+
const detectedPlugins = defaultRegistry.getDetectedPlugins(cwd).map(p => p.name);
|
|
46
|
+
if (detectedPlugins.length > 0) {
|
|
47
|
+
rawManifest.plugins = detectedPlugins;
|
|
48
|
+
}
|
|
36
49
|
const validation = evaluateTeam(rawManifest);
|
|
37
50
|
if (teamHasBlockingIssues(validation)) {
|
|
38
51
|
printManifestValidation(validation);
|
package/dist/wizard/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/G,OAAO,EACL,YAAY,EACZ,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,cAAc,GACf,MAAM,2BAA2B,CAAC;AASnC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,KAAK,EAAE,cAAc,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAEtF,WAAW,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IACpF,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC;QAC1C,cAAc;QACd,gBAAgB,EAAE,eAAe;KAClC,CAAC,CAAC;IAEH,IAAI,WAAW,GAAG,MAAM,iBAAiB,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-customization.d.ts","sourceRoot":"","sources":["../../../src/wizard/steps/agent-customization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,qBAAqB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-customization.d.ts","sourceRoot":"","sources":["../../../src/wizard/steps/agent-customization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,qBAAqB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AA0EvE,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,QAAQ,CAAC,CAsDnB"}
|
|
@@ -1,43 +1,41 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { AGENT_SKILLS } from '../../core/skills.js';
|
|
3
2
|
import { expandSkills } from '../../core/skill-resolver.js';
|
|
4
3
|
import { promptConfirm, promptList, promptCheckbox, promptInput } from '../../utils/prompts.js';
|
|
4
|
+
import { defaultRegistry } from '../../plugins/index.js';
|
|
5
5
|
/**
|
|
6
6
|
* Human-readable labels for each AgentSkill value, shown in the wizard checkbox.
|
|
7
7
|
* Format: "<label> (<tools>)"
|
|
8
8
|
*/
|
|
9
|
-
function formatSkillLabel(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
web: 'Web access',
|
|
16
|
-
delegate: 'Delegate',
|
|
17
|
-
interact: 'Interact',
|
|
18
|
-
notebook: 'Notebook',
|
|
19
|
-
};
|
|
20
|
-
return `${labels[skill].padEnd(16)} (${tools.join(', ')})`;
|
|
9
|
+
function formatSkillLabel(skillId, description) {
|
|
10
|
+
// Try to use the registry description, otherwise default to capitalized ID
|
|
11
|
+
const skillDef = defaultRegistry.getSkills()[skillId];
|
|
12
|
+
const label = skillDef ? skillDef.description : skillId;
|
|
13
|
+
const shortLabel = label.split(' ')[0] ?? skillId; // Use first word as short name
|
|
14
|
+
return `${shortLabel.padEnd(16)}`;
|
|
21
15
|
}
|
|
22
16
|
function getSupportedSkills(targetContext) {
|
|
23
|
-
|
|
17
|
+
// Return skills from the registry that this target supports (has mapped tools for)
|
|
18
|
+
const allSkills = Object.keys(defaultRegistry.getSkills());
|
|
19
|
+
return allSkills.filter((skill) => (targetContext.skillMap[skill]?.length ?? 0) > 0);
|
|
24
20
|
}
|
|
25
21
|
async function promptTargetModel(targetContext, currentModel) {
|
|
26
|
-
|
|
22
|
+
const models = Object.values(defaultRegistry.getModels());
|
|
23
|
+
const targetModels = models.filter((m) => !m.target || m.target === targetContext.name);
|
|
24
|
+
if (targetModels.length > 0) {
|
|
25
|
+
const choices = targetModels.map((m) => ({
|
|
26
|
+
name: `${m.displayName.padEnd(20)} ${chalk.dim(`(${m.features.join(', ')})`)}`,
|
|
27
|
+
value: m.id,
|
|
28
|
+
}));
|
|
29
|
+
choices.push({ name: 'unspecified', value: 'unspecified' });
|
|
27
30
|
const model = await promptList({
|
|
28
|
-
message:
|
|
29
|
-
choices
|
|
30
|
-
|
|
31
|
-
{ name: 'opus (most capable)', value: 'opus' },
|
|
32
|
-
{ name: 'haiku (fastest)', value: 'haiku' },
|
|
33
|
-
{ name: 'unspecified', value: 'unspecified' },
|
|
34
|
-
],
|
|
35
|
-
default: currentModel ?? 'sonnet',
|
|
31
|
+
message: ` Model [${targetContext.name}]:`,
|
|
32
|
+
choices,
|
|
33
|
+
default: currentModel ?? targetModels[0].id,
|
|
36
34
|
});
|
|
37
35
|
return model === 'unspecified' ? undefined : model;
|
|
38
36
|
}
|
|
39
37
|
const model = await promptInput({
|
|
40
|
-
message:
|
|
38
|
+
message: ` Model [${targetContext.name}] (leave empty to omit):`,
|
|
41
39
|
default: currentModel ?? '',
|
|
42
40
|
});
|
|
43
41
|
return model.trim() || undefined;
|
|
@@ -47,12 +45,13 @@ async function promptReasoningEffort(targetContext, currentValue) {
|
|
|
47
45
|
return undefined;
|
|
48
46
|
}
|
|
49
47
|
const reasoning = await promptList({
|
|
50
|
-
message: ' Reasoning effort:',
|
|
48
|
+
message: ' Reasoning effort [codex]:',
|
|
51
49
|
choices: [
|
|
52
50
|
{ name: 'unspecified', value: 'unspecified' },
|
|
53
51
|
{ name: 'low', value: 'low' },
|
|
54
52
|
{ name: 'medium', value: 'medium' },
|
|
55
53
|
{ name: 'high', value: 'high' },
|
|
54
|
+
{ name: 'xhigh', value: 'xhigh' },
|
|
56
55
|
],
|
|
57
56
|
default: currentValue ?? 'unspecified',
|
|
58
57
|
});
|
|
@@ -63,7 +62,7 @@ export async function stepAgentCustomization(team, targetContext, options) {
|
|
|
63
62
|
return team;
|
|
64
63
|
}
|
|
65
64
|
const customize = await promptConfirm({
|
|
66
|
-
message:
|
|
65
|
+
message: `Customize ${chalk.cyan(targetContext.name)} agents before generating?`,
|
|
67
66
|
default: false,
|
|
68
67
|
});
|
|
69
68
|
if (!customize)
|
|
@@ -73,7 +72,7 @@ export async function stepAgentCustomization(team, targetContext, options) {
|
|
|
73
72
|
for (const name of Object.keys(updatedAgents)) {
|
|
74
73
|
const agent = updatedAgents[name];
|
|
75
74
|
console.log('');
|
|
76
|
-
console.log(chalk.bold(name) + chalk.dim(` - ${agent.description}`));
|
|
75
|
+
console.log(chalk.bold(name) + chalk.dim(` - ${agent.description} `) + chalk.cyan(`[${targetContext.name}]`));
|
|
77
76
|
const model = await promptTargetModel(targetContext, agent.runtime.model);
|
|
78
77
|
const reasoningEffort = await promptReasoningEffort(targetContext, agent.runtime.reasoningEffort);
|
|
79
78
|
// Reverse-map the agent's current tools to pre-select matching skills.
|
|
@@ -83,7 +82,7 @@ export async function stepAgentCustomization(team, targetContext, options) {
|
|
|
83
82
|
const selectedSkills = await promptCheckbox({
|
|
84
83
|
message: ` Skills for ${name}:`,
|
|
85
84
|
choices: supportedSkills.map((skill) => ({
|
|
86
|
-
name: formatSkillLabel(skill,
|
|
85
|
+
name: formatSkillLabel(skill, defaultRegistry.getSkills()[skill]?.description),
|
|
87
86
|
value: skill,
|
|
88
87
|
checked: currentSkills.includes(skill),
|
|
89
88
|
})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-customization.js","sourceRoot":"","sources":["../../../src/wizard/steps/agent-customization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-customization.js","sourceRoot":"","sources":["../../../src/wizard/steps/agent-customization.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "teamcast",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "YAML-driven CLI to design, validate, and generate multi-target agent teams for Claude Code and Codex",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"multi-target",
|
|
33
33
|
"openai",
|
|
34
34
|
"team",
|
|
35
|
+
"custom-plugins",
|
|
35
36
|
"yaml"
|
|
36
37
|
],
|
|
37
38
|
"author": "Nickolas Voznyuk",
|
|
@@ -29,6 +29,12 @@
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
|
+
"plugins": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": {
|
|
35
|
+
"type": "string"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
32
38
|
"claude": {
|
|
33
39
|
"$ref": "#/definitions/TargetConfig"
|
|
34
40
|
},
|
|
@@ -212,7 +218,7 @@
|
|
|
212
218
|
"model": { "type": "string", "minLength": 1 },
|
|
213
219
|
"reasoning_effort": {
|
|
214
220
|
"type": "string",
|
|
215
|
-
"enum": ["low", "medium", "high"]
|
|
221
|
+
"enum": ["low", "medium", "high", "xhigh"]
|
|
216
222
|
},
|
|
217
223
|
"capability_traits": {
|
|
218
224
|
"type": "array",
|
|
@@ -297,7 +303,9 @@
|
|
|
297
303
|
}
|
|
298
304
|
},
|
|
299
305
|
"additionalProperties": false
|
|
300
|
-
}
|
|
306
|
+
},
|
|
307
|
+
"policies": { "$ref": "#/definitions/PoliciesConfig" },
|
|
308
|
+
"settings": { "$ref": "#/definitions/GenerationSettings" }
|
|
301
309
|
}
|
|
302
310
|
},
|
|
303
311
|
"PermissionsConfig": {
|
|
@@ -10,11 +10,8 @@ project:
|
|
|
10
10
|
description: Single enhanced developer agent with safe defaults for individual developers.
|
|
11
11
|
policies:
|
|
12
12
|
fragments:
|
|
13
|
-
- allow-npm-run
|
|
14
|
-
- allow-npm-test
|
|
15
13
|
- allow-git-read
|
|
16
14
|
- allow-git-write
|
|
17
|
-
- allow-npx
|
|
18
15
|
- ask-git-push
|
|
19
16
|
- deny-destructive-shell
|
|
20
17
|
- deny-env-files
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { AbstractPermission } from './types.js';
|
|
2
|
-
export declare const ABSTRACT_PERMISSIONS: AbstractPermission[];
|
|
3
|
-
type PermissionBucket = 'allow' | 'ask' | 'deny';
|
|
4
|
-
export declare function isAbstractPermission(value: string): value is AbstractPermission;
|
|
5
|
-
export declare function normalizePermissionTokens(tokens: string[] | undefined, bucket: PermissionBucket): {
|
|
6
|
-
abstract: AbstractPermission[] | undefined;
|
|
7
|
-
raw: string[] | undefined;
|
|
8
|
-
};
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/core/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAYpD,CAAC;AAEF,KAAK,gBAAgB,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AA8BjD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,kBAAkB,CAE/E;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAC5B,MAAM,EAAE,gBAAgB,GACvB;IAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CAAE,CA2B3E"}
|
package/dist/core/permissions.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
export const ABSTRACT_PERMISSIONS = [
|
|
2
|
-
'project.commands',
|
|
3
|
-
'tests',
|
|
4
|
-
'git.read',
|
|
5
|
-
'git.write',
|
|
6
|
-
'package.exec',
|
|
7
|
-
'security.audit',
|
|
8
|
-
'git.push',
|
|
9
|
-
'destructive-shell',
|
|
10
|
-
'downloads',
|
|
11
|
-
'dynamic-exec',
|
|
12
|
-
'env.write',
|
|
13
|
-
];
|
|
14
|
-
const LEGACY_PERMISSION_RULE_MAP = {
|
|
15
|
-
allow: {
|
|
16
|
-
'Bash(npm run *)': 'project.commands',
|
|
17
|
-
'Bash(npm run)': 'project.commands',
|
|
18
|
-
'Bash(npm test *)': 'tests',
|
|
19
|
-
'Bash(npm test)': 'tests',
|
|
20
|
-
'Bash(git status)': 'git.read',
|
|
21
|
-
'Bash(git diff *)': 'git.read',
|
|
22
|
-
'Bash(git add *)': 'git.write',
|
|
23
|
-
'Bash(git commit *)': 'git.write',
|
|
24
|
-
'Bash(npx *)': 'package.exec',
|
|
25
|
-
'Bash(npm audit)': 'security.audit',
|
|
26
|
-
},
|
|
27
|
-
ask: {
|
|
28
|
-
'Bash(git push *)': 'git.push',
|
|
29
|
-
},
|
|
30
|
-
deny: {
|
|
31
|
-
'Bash(rm -rf *)': 'destructive-shell',
|
|
32
|
-
'Bash(git push --force *)': 'destructive-shell',
|
|
33
|
-
'Bash(curl *)': 'downloads',
|
|
34
|
-
'Bash(wget *)': 'downloads',
|
|
35
|
-
'Bash(eval *)': 'dynamic-exec',
|
|
36
|
-
'Bash(exec *)': 'dynamic-exec',
|
|
37
|
-
'Write(.env*)': 'env.write',
|
|
38
|
-
'Edit(.env*)': 'env.write',
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
export function isAbstractPermission(value) {
|
|
42
|
-
return ABSTRACT_PERMISSIONS.includes(value);
|
|
43
|
-
}
|
|
44
|
-
export function normalizePermissionTokens(tokens, bucket) {
|
|
45
|
-
if (!tokens?.length) {
|
|
46
|
-
return { abstract: undefined, raw: undefined };
|
|
47
|
-
}
|
|
48
|
-
const abstract = new Set();
|
|
49
|
-
const raw = new Set();
|
|
50
|
-
for (const token of tokens) {
|
|
51
|
-
if (isAbstractPermission(token)) {
|
|
52
|
-
abstract.add(token);
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
const mapped = LEGACY_PERMISSION_RULE_MAP[bucket][token];
|
|
56
|
-
if (mapped) {
|
|
57
|
-
abstract.add(mapped);
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
raw.add(token);
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
abstract: abstract.size > 0 ? [...abstract] : undefined,
|
|
64
|
-
raw: raw.size > 0 ? [...raw] : undefined,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=permissions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/core/permissions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD,kBAAkB;IAClB,OAAO;IACP,UAAU;IACV,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,UAAU;IACV,mBAAmB;IACnB,WAAW;IACX,cAAc;IACd,WAAW;CACZ,CAAC;AAIF,MAAM,0BAA0B,GAAiE;IAC/F,KAAK,EAAE;QACL,iBAAiB,EAAE,kBAAkB;QACrC,eAAe,EAAE,kBAAkB;QACnC,kBAAkB,EAAE,OAAO;QAC3B,gBAAgB,EAAE,OAAO;QACzB,kBAAkB,EAAE,UAAU;QAC9B,kBAAkB,EAAE,UAAU;QAC9B,iBAAiB,EAAE,WAAW;QAC9B,oBAAoB,EAAE,WAAW;QACjC,aAAa,EAAE,cAAc;QAC7B,iBAAiB,EAAE,gBAAgB;KACpC;IACD,GAAG,EAAE;QACH,kBAAkB,EAAE,UAAU;KAC/B;IACD,IAAI,EAAE;QACJ,gBAAgB,EAAE,mBAAmB;QACrC,0BAA0B,EAAE,mBAAmB;QAC/C,cAAc,EAAE,WAAW;QAC3B,cAAc,EAAE,WAAW;QAC3B,cAAc,EAAE,cAAc;QAC9B,cAAc,EAAE,cAAc;QAC9B,cAAc,EAAE,WAAW;QAC3B,aAAa,EAAE,WAAW;KAC3B;CACF,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,KAA2B,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA4B,EAC5B,MAAwB;IAExB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QACvD,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;KACzC,CAAC;AACJ,CAAC"}
|