teamcast 0.9.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/team.d.ts +0 -1
- package/dist/application/team.d.ts.map +1 -1
- package/dist/application/team.js +74 -6
- package/dist/application/team.js.map +1 -1
- package/dist/application/validate-team.d.ts +3 -2
- package/dist/application/validate-team.d.ts.map +1 -1
- package/dist/application/validate-team.js +12 -88
- package/dist/application/validate-team.js.map +1 -1
- package/dist/cli/diff.d.ts +2 -2
- package/dist/cli/diff.d.ts.map +1 -1
- package/dist/cli/diff.js +47 -50
- package/dist/cli/diff.js.map +1 -1
- package/dist/cli/errors.d.ts +7 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +15 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/explain.d.ts +2 -3
- package/dist/cli/explain.d.ts.map +1 -1
- package/dist/cli/explain.js +33 -37
- package/dist/cli/explain.js.map +1 -1
- package/dist/cli/generate.d.ts +4 -2
- package/dist/cli/generate.d.ts.map +1 -1
- package/dist/cli/generate.js +50 -54
- package/dist/cli/generate.js.map +1 -1
- package/dist/cli/import.d.ts +4 -2
- package/dist/cli/import.d.ts.map +1 -1
- package/dist/cli/import.js +92 -117
- package/dist/cli/import.js.map +1 -1
- package/dist/cli/index.js +8 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +7 -2
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +37 -44
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/manage.d.ts +21 -2
- package/dist/cli/manage.d.ts.map +1 -1
- package/dist/cli/manage.js +159 -191
- package/dist/cli/manage.js.map +1 -1
- package/dist/cli/registrars/diff.d.ts +3 -0
- package/dist/cli/registrars/diff.d.ts.map +1 -0
- package/dist/cli/registrars/diff.js +10 -0
- package/dist/cli/registrars/diff.js.map +1 -0
- package/dist/cli/registrars/explain.d.ts +3 -0
- package/dist/cli/registrars/explain.d.ts.map +1 -0
- package/dist/cli/registrars/explain.js +10 -0
- package/dist/cli/registrars/explain.js.map +1 -0
- package/dist/cli/registrars/generate.d.ts +3 -0
- package/dist/cli/registrars/generate.d.ts.map +1 -0
- package/dist/cli/registrars/generate.js +11 -0
- package/dist/cli/registrars/generate.js.map +1 -0
- package/dist/cli/registrars/import.d.ts +3 -0
- package/dist/cli/registrars/import.d.ts.map +1 -0
- package/dist/cli/registrars/import.js +11 -0
- package/dist/cli/registrars/import.js.map +1 -0
- package/dist/cli/registrars/init.d.ts +3 -0
- package/dist/cli/registrars/init.d.ts.map +1 -0
- package/dist/cli/registrars/init.js +14 -0
- package/dist/cli/registrars/init.js.map +1 -0
- package/dist/cli/registrars/manage.d.ts +3 -0
- package/dist/cli/registrars/manage.d.ts.map +1 -0
- package/dist/cli/registrars/manage.js +54 -0
- package/dist/cli/registrars/manage.js.map +1 -0
- package/dist/cli/registrars/reset.d.ts +3 -0
- package/dist/cli/registrars/reset.d.ts.map +1 -0
- package/dist/cli/registrars/reset.js +19 -0
- package/dist/cli/registrars/reset.js.map +1 -0
- package/dist/cli/registrars/validate.d.ts +3 -0
- package/dist/cli/registrars/validate.d.ts.map +1 -0
- package/dist/cli/registrars/validate.js +12 -0
- package/dist/cli/registrars/validate.js.map +1 -0
- package/dist/cli/reset.d.ts +7 -2
- package/dist/cli/reset.d.ts.map +1 -1
- package/dist/cli/reset.js +60 -69
- package/dist/cli/reset.js.map +1 -1
- package/dist/cli/validate.d.ts +5 -2
- package/dist/cli/validate.d.ts.map +1 -1
- package/dist/cli/validate.js +33 -38
- package/dist/cli/validate.js.map +1 -1
- package/dist/generator/index.d.ts +0 -1
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +1 -3
- package/dist/generator/index.js.map +1 -1
- package/dist/importer/claude.d.ts +4 -0
- package/dist/importer/claude.d.ts.map +1 -0
- package/dist/importer/claude.js +51 -0
- package/dist/importer/claude.js.map +1 -0
- package/dist/importer/codex.d.ts +4 -0
- package/dist/importer/codex.d.ts.map +1 -0
- package/dist/importer/codex.js +50 -0
- package/dist/importer/codex.js.map +1 -0
- package/dist/importer/index.d.ts +11 -12
- package/dist/importer/index.d.ts.map +1 -1
- package/dist/importer/index.js +29 -501
- package/dist/importer/index.js.map +1 -1
- package/dist/importer/shared.d.ts +40 -0
- package/dist/importer/shared.d.ts.map +1 -0
- package/dist/importer/shared.js +373 -0
- package/dist/importer/shared.js.map +1 -0
- package/dist/importer/types.d.ts +16 -0
- package/dist/importer/types.d.ts.map +1 -0
- package/dist/importer/types.js +2 -0
- package/dist/importer/types.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -4
- package/dist/index.js.map +1 -1
- package/dist/manifest/defaults.d.ts.map +1 -1
- package/dist/manifest/defaults.js +76 -20
- package/dist/manifest/defaults.js.map +1 -1
- package/dist/manifest/normalize.d.ts.map +1 -1
- package/dist/manifest/normalize.js +9 -5
- package/dist/manifest/normalize.js.map +1 -1
- package/dist/manifest/targets.d.ts +11 -0
- package/dist/manifest/targets.d.ts.map +1 -0
- package/dist/manifest/targets.js +29 -0
- package/dist/manifest/targets.js.map +1 -0
- package/dist/manifest/types.d.ts +0 -2
- package/dist/manifest/types.d.ts.map +1 -1
- package/dist/manifest/types.js.map +1 -1
- package/dist/plugins/catalog.d.ts +10 -0
- package/dist/plugins/catalog.d.ts.map +1 -0
- package/dist/plugins/catalog.js +30 -0
- package/dist/plugins/catalog.js.map +1 -0
- package/dist/plugins/core/presets-plugin.d.ts +3 -0
- package/dist/plugins/core/presets-plugin.d.ts.map +1 -0
- package/dist/plugins/core/presets-plugin.js +10 -0
- package/dist/plugins/core/presets-plugin.js.map +1 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +2 -1
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/inject.d.ts +6 -2
- package/dist/plugins/inject.d.ts.map +1 -1
- package/dist/plugins/inject.js +41 -9
- package/dist/plugins/inject.js.map +1 -1
- package/dist/plugins/merge-policies.d.ts +1 -1
- package/dist/plugins/merge-policies.d.ts.map +1 -1
- package/dist/plugins/merge-policies.js +49 -15
- package/dist/plugins/merge-policies.js.map +1 -1
- package/dist/plugins/registry.d.ts +12 -6
- package/dist/plugins/registry.d.ts.map +1 -1
- package/dist/plugins/registry.js +34 -0
- package/dist/plugins/registry.js.map +1 -1
- package/dist/plugins/types.d.ts +8 -4
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/presets/index.d.ts +1 -0
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +62 -16
- package/dist/presets/index.js.map +1 -1
- package/dist/renderers/index.d.ts +1 -1
- package/dist/renderers/index.d.ts.map +1 -1
- package/dist/renderers/index.js +1 -6
- package/dist/renderers/index.js.map +1 -1
- package/dist/renderers/registry.d.ts +1 -0
- package/dist/renderers/registry.d.ts.map +1 -1
- package/dist/renderers/registry.js +21 -0
- package/dist/renderers/registry.js.map +1 -1
- package/dist/team-templates/presets.d.ts.map +1 -1
- package/dist/team-templates/presets.js +9 -5
- package/dist/team-templates/presets.js.map +1 -1
- package/dist/validator/reporter.d.ts +2 -0
- package/dist/validator/reporter.d.ts.map +1 -1
- package/dist/validator/reporter.js +38 -30
- package/dist/validator/reporter.js.map +1 -1
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +7 -6
- 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 +6 -9
- package/dist/wizard/steps/agent-customization.js.map +1 -1
- package/dist/wizard/steps/team-selection.js +2 -2
- package/dist/wizard/steps/team-selection.js.map +1 -1
- package/package.json +1 -1
- package/schema/teamcast.schema.json +0 -6
- package/templates/presets/feature-team.yaml +9 -9
- package/templates/presets/research-and-build.yaml +9 -9
- package/templates/presets/secure-dev.yaml +20 -20
- package/templates/presets/solo-dev.yaml +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-policies.js","sourceRoot":"","sources":["../../src/plugins/merge-policies.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,YAA8B;IAC1D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"merge-policies.js","sourceRoot":"","sources":["../../src/plugins/merge-policies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { TeamCastPlugin } from './types.js';
|
|
2
|
-
import type { CanonicalTool } from '../tools/types.js';
|
|
1
|
+
import type { ModelDefinition, PluginModelMap, PluginPresetMap, PluginSkillMap, PluginToolMap, SkillDefinition, TeamCastPlugin } from './types.js';
|
|
3
2
|
import type { PoliciesConfig } from '../manifest/types.js';
|
|
3
|
+
import type { Preset, PresetMeta } from '../presets/types.js';
|
|
4
4
|
export declare class PluginRegistry {
|
|
5
5
|
private plugins;
|
|
6
6
|
register(plugin: TeamCastPlugin): void;
|
|
@@ -9,10 +9,16 @@ export declare class PluginRegistry {
|
|
|
9
9
|
* Filter plugins to those that return true for their detect() method in the given directory.
|
|
10
10
|
*/
|
|
11
11
|
getDetectedPlugins(cwd: string): TeamCastPlugin[];
|
|
12
|
-
getTools():
|
|
13
|
-
getModels():
|
|
14
|
-
getSkills():
|
|
15
|
-
getPresets():
|
|
12
|
+
getTools(): PluginToolMap;
|
|
13
|
+
getModels(): PluginModelMap;
|
|
14
|
+
getSkills(): PluginSkillMap;
|
|
15
|
+
getPresets(): PluginPresetMap;
|
|
16
|
+
listModels(): ModelDefinition[];
|
|
17
|
+
getModel(id: string): ModelDefinition | undefined;
|
|
18
|
+
listSkills(): SkillDefinition[];
|
|
19
|
+
getSkill(id: string): SkillDefinition | undefined;
|
|
20
|
+
listPresetMetas(): PresetMeta[];
|
|
21
|
+
getPreset(name: string): Preset | undefined;
|
|
16
22
|
/**
|
|
17
23
|
* Deep merges policies from multiple plugins
|
|
18
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAmB9D,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAwB;IAEhC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAatC,UAAU,IAAI,cAAc,EAAE;IAIrC;;OAEG;IACI,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE;IAIjD,QAAQ,IAAI,aAAa;IAUzB,SAAS,IAAI,cAAc;IAU3B,SAAS,IAAI,cAAc;IAU3B,UAAU,IAAI,eAAe;IAU7B,UAAU,IAAI,eAAe,EAAE;IAI/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIjD,UAAU,IAAI,eAAe,EAAE;IAI/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIjD,eAAe,IAAI,UAAU,EAAE;IAM/B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIlD;;OAEG;IACI,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,cAAc;CAIxE"}
|
package/dist/plugins/registry.js
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
import { mergePolicies } from './merge-policies.js';
|
|
2
|
+
function assertNoKeyCollisions(namespace, existing, incoming, pluginName) {
|
|
3
|
+
if (!incoming) {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
for (const key of Object.keys(incoming)) {
|
|
7
|
+
if (key in existing) {
|
|
8
|
+
throw new Error(`Plugin "${pluginName}" conflicts on ${namespace} "${key}"`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
2
12
|
export class PluginRegistry {
|
|
3
13
|
plugins = [];
|
|
4
14
|
register(plugin) {
|
|
5
15
|
if (this.plugins.some((p) => p.name === plugin.name)) {
|
|
6
16
|
throw new Error(`Plugin with name "${plugin.name}" is already registered`);
|
|
7
17
|
}
|
|
18
|
+
assertNoKeyCollisions('tool', this.getTools(), plugin.tools, plugin.name);
|
|
19
|
+
assertNoKeyCollisions('model', this.getModels(), plugin.models, plugin.name);
|
|
20
|
+
assertNoKeyCollisions('skill', this.getSkills(), plugin.skills, plugin.name);
|
|
21
|
+
assertNoKeyCollisions('preset', this.getPresets(), plugin.presets, plugin.name);
|
|
8
22
|
this.plugins.push(plugin);
|
|
9
23
|
}
|
|
10
24
|
getPlugins() {
|
|
@@ -52,6 +66,26 @@ export class PluginRegistry {
|
|
|
52
66
|
}
|
|
53
67
|
return presets;
|
|
54
68
|
}
|
|
69
|
+
listModels() {
|
|
70
|
+
return Object.values(this.getModels()).sort((left, right) => left.id.localeCompare(right.id));
|
|
71
|
+
}
|
|
72
|
+
getModel(id) {
|
|
73
|
+
return this.getModels()[id];
|
|
74
|
+
}
|
|
75
|
+
listSkills() {
|
|
76
|
+
return Object.values(this.getSkills()).sort((left, right) => left.id.localeCompare(right.id));
|
|
77
|
+
}
|
|
78
|
+
getSkill(id) {
|
|
79
|
+
return this.getSkills()[id];
|
|
80
|
+
}
|
|
81
|
+
listPresetMetas() {
|
|
82
|
+
return Object.values(this.getPresets())
|
|
83
|
+
.map((preset) => preset.meta)
|
|
84
|
+
.sort((left, right) => left.name.localeCompare(right.name));
|
|
85
|
+
}
|
|
86
|
+
getPreset(name) {
|
|
87
|
+
return this.getPresets()[name];
|
|
88
|
+
}
|
|
55
89
|
/**
|
|
56
90
|
* Deep merges policies from multiple plugins
|
|
57
91
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins/types.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ export interface SkillDefinition {
|
|
|
18
18
|
id: string;
|
|
19
19
|
description: string;
|
|
20
20
|
}
|
|
21
|
+
export type PluginToolMap = Record<string, CanonicalTool>;
|
|
22
|
+
export type PluginModelMap = Record<string, ModelDefinition>;
|
|
23
|
+
export type PluginSkillMap = Record<string, SkillDefinition>;
|
|
24
|
+
export type PluginPresetMap = Record<string, Preset>;
|
|
21
25
|
export interface TeamCastPlugin {
|
|
22
26
|
/**
|
|
23
27
|
* Unique identifier for the plugin (e.g., 'core-tools', 'python-env')
|
|
@@ -50,15 +54,15 @@ export interface TeamCastPlugin {
|
|
|
50
54
|
/**
|
|
51
55
|
* New canonical tools registered by this plugin
|
|
52
56
|
*/
|
|
53
|
-
tools?:
|
|
57
|
+
tools?: PluginToolMap;
|
|
54
58
|
/**
|
|
55
59
|
* LLM Models registered by this plugin
|
|
56
60
|
*/
|
|
57
|
-
models?:
|
|
61
|
+
models?: PluginModelMap;
|
|
58
62
|
/**
|
|
59
63
|
* Role skills provided by this plugin
|
|
60
64
|
*/
|
|
61
|
-
skills?:
|
|
65
|
+
skills?: PluginSkillMap;
|
|
62
66
|
/**
|
|
63
67
|
* System Prompt fragments injected into agents
|
|
64
68
|
*/
|
|
@@ -66,6 +70,6 @@ export interface TeamCastPlugin {
|
|
|
66
70
|
/**
|
|
67
71
|
* Exported presets
|
|
68
72
|
*/
|
|
69
|
-
presets?:
|
|
73
|
+
presets?: PluginPresetMap;
|
|
70
74
|
}
|
|
71
75
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC7D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;KAC1B,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IAExB;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE/C;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B"}
|
package/dist/presets/index.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ import type { TeamCastManifest } from '../manifest/types.js';
|
|
|
2
2
|
import type { Preset, PresetMeta } from './types.js';
|
|
3
3
|
export declare function listPresets(): PresetMeta[];
|
|
4
4
|
export declare function loadPreset(name: string): Preset;
|
|
5
|
+
export declare function getPresetRecord(): Record<string, Preset>;
|
|
5
6
|
export declare function applyPreset(preset: Preset, projectName: string): TeamCastManifest;
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAwCrD,wBAAgB,WAAW,IAAI,UAAU,EAAE,CAQ1C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoC/C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAQjF"}
|
package/dist/presets/index.js
CHANGED
|
@@ -7,9 +7,22 @@ import { validateSchema } from '../manifest/schema-validator.js';
|
|
|
7
7
|
const __filename = fileURLToPath(import.meta.url);
|
|
8
8
|
const __dirname = dirname(__filename);
|
|
9
9
|
const BUILTIN_PRESETS_DIR = join(__dirname, '../../templates/presets');
|
|
10
|
+
let presetNamesCache = null;
|
|
11
|
+
const presetCache = new Map();
|
|
12
|
+
const presetErrorCache = new Map();
|
|
13
|
+
let presetRecordCache = null;
|
|
10
14
|
function getPresetPath(name) {
|
|
11
15
|
return join(BUILTIN_PRESETS_DIR, `${name}.yaml`);
|
|
12
16
|
}
|
|
17
|
+
function getPresetNames() {
|
|
18
|
+
if (!presetNamesCache) {
|
|
19
|
+
presetNamesCache = readdirSync(BUILTIN_PRESETS_DIR)
|
|
20
|
+
.filter((entry) => entry.endsWith('.yaml'))
|
|
21
|
+
.map((entry) => entry.replace(/\.yaml$/, ''))
|
|
22
|
+
.sort();
|
|
23
|
+
}
|
|
24
|
+
return [...presetNamesCache];
|
|
25
|
+
}
|
|
13
26
|
function countAgents(manifest) {
|
|
14
27
|
return [manifest.claude, manifest.codex]
|
|
15
28
|
.filter((target) => Boolean(target))
|
|
@@ -24,30 +37,63 @@ function buildPresetMeta(name, team) {
|
|
|
24
37
|
};
|
|
25
38
|
}
|
|
26
39
|
export function listPresets() {
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
return getPresetNames().flatMap((name) => {
|
|
41
|
+
try {
|
|
42
|
+
return [loadPreset(name).meta];
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
33
47
|
});
|
|
34
48
|
}
|
|
35
49
|
export function loadPreset(name) {
|
|
50
|
+
if (presetCache.has(name)) {
|
|
51
|
+
return presetCache.get(name);
|
|
52
|
+
}
|
|
53
|
+
if (presetErrorCache.has(name)) {
|
|
54
|
+
throw presetErrorCache.get(name);
|
|
55
|
+
}
|
|
36
56
|
const presetPath = getPresetPath(name);
|
|
37
|
-
if (!existsSync(presetPath)) {
|
|
57
|
+
if (!existsSync(presetPath) || !getPresetNames().includes(name)) {
|
|
38
58
|
const available = listPresets().map((entry) => entry.name).join(', ');
|
|
39
59
|
throw new Error(`Unknown preset "${name}". Available presets: ${available}`);
|
|
40
60
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
61
|
+
try {
|
|
62
|
+
const parsed = parse(readFileSync(presetPath, 'utf-8'));
|
|
63
|
+
const schemaResult = validateSchema(parsed);
|
|
64
|
+
if (!schemaResult.valid) {
|
|
65
|
+
throw new Error(`Preset "${name}" failed schema validation:\n${schemaResult.errors.map((error) => ` ${error.path}: ${error.message}`).join('\n')}`);
|
|
66
|
+
}
|
|
67
|
+
const team = applyDefaults(schemaResult.data);
|
|
68
|
+
const preset = {
|
|
69
|
+
meta: buildPresetMeta(name, team),
|
|
70
|
+
team,
|
|
71
|
+
};
|
|
72
|
+
presetCache.set(name, preset);
|
|
73
|
+
presetRecordCache = null;
|
|
74
|
+
return preset;
|
|
45
75
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const presetError = error instanceof Error ? error : new Error(String(error));
|
|
78
|
+
presetErrorCache.set(name, presetError);
|
|
79
|
+
throw presetError;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export function getPresetRecord() {
|
|
83
|
+
if (presetRecordCache) {
|
|
84
|
+
return { ...presetRecordCache };
|
|
85
|
+
}
|
|
86
|
+
const record = {};
|
|
87
|
+
for (const name of getPresetNames()) {
|
|
88
|
+
try {
|
|
89
|
+
record[name] = loadPreset(name);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
presetRecordCache = record;
|
|
96
|
+
return { ...record };
|
|
51
97
|
}
|
|
52
98
|
export function applyPreset(preset, projectName) {
|
|
53
99
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAIjE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type { PlatformRenderer, RenderedFile, TeamRenderSpec } from './types.js';
|
|
2
2
|
export type { TargetContext } from './target-context.js';
|
|
3
|
-
export { registerTarget, getTarget, getDefaultTarget, setDefaultTargetName } from './registry.js';
|
|
3
|
+
export { ensureBuiltinTargetsRegistered, registerTarget, getTarget, getDefaultTarget, setDefaultTargetName, } from './registry.js';
|
|
4
4
|
export { ClaudeRenderer } from './claude/index.js';
|
|
5
5
|
export { CodexRenderer } from './codex/index.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjF,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjF,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/renderers/index.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
export { registerTarget, getTarget, getDefaultTarget, setDefaultTargetName } from './registry.js';
|
|
2
|
-
import { registerTarget } from './registry.js';
|
|
3
|
-
import { createClaudeTarget } from './claude/index.js';
|
|
4
|
-
import { createCodexTarget } from './codex/index.js';
|
|
5
|
-
registerTarget('claude', createClaudeTarget);
|
|
6
|
-
registerTarget('codex', createCodexTarget);
|
|
1
|
+
export { ensureBuiltinTargetsRegistered, registerTarget, getTarget, getDefaultTarget, setDefaultTargetName, } from './registry.js';
|
|
7
2
|
export { ClaudeRenderer } from './claude/index.js';
|
|
8
3
|
export { CodexRenderer } from './codex/index.js';
|
|
9
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { TargetContext } from './target-context.js';
|
|
2
2
|
export type TargetFactory = () => TargetContext;
|
|
3
|
+
export declare function ensureBuiltinTargetsRegistered(): void;
|
|
3
4
|
export declare function registerTarget(name: string, factory: TargetFactory): void;
|
|
4
5
|
export declare function getTarget(name: string): TargetContext;
|
|
5
6
|
export declare function getDefaultTarget(): TargetContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/renderers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/renderers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,MAAM,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC;AAMhD,wBAAgB,8BAA8B,IAAI,IAAI,CAarD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAMzE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAOrD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAGnD"}
|
|
@@ -1,9 +1,29 @@
|
|
|
1
|
+
import { createClaudeTarget } from './claude/index.js';
|
|
2
|
+
import { createCodexTarget } from './codex/index.js';
|
|
1
3
|
const registry = new Map();
|
|
2
4
|
let defaultTargetName = 'claude';
|
|
5
|
+
let builtinsRegistered = false;
|
|
6
|
+
export function ensureBuiltinTargetsRegistered() {
|
|
7
|
+
if (builtinsRegistered) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (!registry.has('claude')) {
|
|
11
|
+
registry.set('claude', createClaudeTarget);
|
|
12
|
+
}
|
|
13
|
+
if (!registry.has('codex')) {
|
|
14
|
+
registry.set('codex', createCodexTarget);
|
|
15
|
+
}
|
|
16
|
+
builtinsRegistered = true;
|
|
17
|
+
}
|
|
3
18
|
export function registerTarget(name, factory) {
|
|
19
|
+
ensureBuiltinTargetsRegistered();
|
|
20
|
+
if (registry.has(name)) {
|
|
21
|
+
throw new Error(`Target renderer "${name}" is already registered`);
|
|
22
|
+
}
|
|
4
23
|
registry.set(name, factory);
|
|
5
24
|
}
|
|
6
25
|
export function getTarget(name) {
|
|
26
|
+
ensureBuiltinTargetsRegistered();
|
|
7
27
|
const factory = registry.get(name);
|
|
8
28
|
if (!factory) {
|
|
9
29
|
throw new Error(`Target renderer not found: ${name}`);
|
|
@@ -17,6 +37,7 @@ export function setDefaultTargetName(name) {
|
|
|
17
37
|
defaultTargetName = name;
|
|
18
38
|
}
|
|
19
39
|
export function getRegisteredTargetNames() {
|
|
40
|
+
ensureBuiltinTargetsRegistered();
|
|
20
41
|
return Array.from(registry.keys());
|
|
21
42
|
}
|
|
22
43
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/renderers/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/renderers/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAClD,IAAI,iBAAiB,GAAG,QAAQ,CAAC;AACjC,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,MAAM,UAAU,8BAA8B;IAC5C,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC3C,CAAC;IAED,kBAAkB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAsB;IACjE,8BAA8B,EAAE,CAAC;IACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,yBAAyB,CAAC,CAAC;IACrE,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,8BAA8B,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,SAAS,CAAC,iBAAiB,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,8BAA8B,EAAE,CAAC;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/team-templates/presets.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,wBAAgB,eAAe,+CAE9B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,wDAEzC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/team-templates/presets.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,wBAAgB,eAAe,+CAE9B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,wDAEzC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,mDAMnD"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getPreset, listPresetMetas as listPluginPresetMetas } from '../plugins/catalog.js';
|
|
2
2
|
export function listPresetMetas() {
|
|
3
|
-
return
|
|
3
|
+
return listPluginPresetMetas();
|
|
4
4
|
}
|
|
5
5
|
export function isPresetName(value) {
|
|
6
|
-
return
|
|
6
|
+
return listPluginPresetMetas().some((preset) => preset.name === value);
|
|
7
7
|
}
|
|
8
8
|
export function getPresetMeta(name) {
|
|
9
|
-
return
|
|
9
|
+
return listPluginPresetMetas().find((preset) => preset.name === name);
|
|
10
10
|
}
|
|
11
11
|
export function buildPresetManifest(name) {
|
|
12
|
-
|
|
12
|
+
const preset = getPreset(name);
|
|
13
|
+
if (!preset) {
|
|
14
|
+
throw new Error(`Unknown preset "${name}"`);
|
|
15
|
+
}
|
|
16
|
+
return preset.team;
|
|
13
17
|
}
|
|
14
18
|
//# sourceMappingURL=presets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/team-templates/presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/team-templates/presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAI5F,MAAM,UAAU,eAAe;IAC7B,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAgB;IAClD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { TeamValidationSummary } from '../application/validate-team.js';
|
|
1
2
|
import type { ValidationResult } from './types.js';
|
|
3
|
+
export declare function printManifestValidationSummary(summary: TeamValidationSummary): void;
|
|
2
4
|
export declare function printValidationReport(results: ValidationResult[], policyAssertionCount?: number): void;
|
|
3
5
|
export declare function hasErrors(results: ValidationResult[]): boolean;
|
|
4
6
|
//# sourceMappingURL=reporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/validator/reporter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6BnD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,oBAAoB,CAAC,EAAE,MAAM,GAC5B,IAAI,
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/validator/reporter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6BnD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAcnF;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,oBAAoB,CAAC,EAAE,MAAM,GAC5B,IAAI,CA6DN;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAE9D"}
|
|
@@ -8,25 +8,37 @@ const CATEGORY_ORDER = [
|
|
|
8
8
|
{ label: 'policy', okDescription: 'Policy assertions' },
|
|
9
9
|
];
|
|
10
10
|
function renderCategoryRow(icon, label, description, items) {
|
|
11
|
-
console.log(` ${icon} ${chalk.bold(label)} ${chalk.dim('
|
|
12
|
-
for (const
|
|
13
|
-
const prefix =
|
|
14
|
-
console.log(` ${prefix} ${
|
|
11
|
+
console.log(` ${icon} ${chalk.bold(label)} ${chalk.dim('-')} ${description}`);
|
|
12
|
+
for (const result of items) {
|
|
13
|
+
const prefix = result.severity === 'error' ? chalk.red(' [error]') : chalk.yellow(' [warn]');
|
|
14
|
+
console.log(` ${prefix} ${result.message}`);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
export function printManifestValidationSummary(summary) {
|
|
18
|
+
if (summary.schemaErrors.length > 0) {
|
|
19
|
+
console.log('');
|
|
20
|
+
console.log(` ${chalk.red('[!!]')} ${chalk.bold('Schema')} ${chalk.dim('-')} ${chalk.red('manifest structure invalid')}`);
|
|
21
|
+
for (const error of summary.schemaErrors) {
|
|
22
|
+
console.log(` ${chalk.red('[error]')} ${error.path}: ${error.message}`);
|
|
23
|
+
}
|
|
24
|
+
console.log('');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
printValidationReport(summary.validationResults, summary.policyAssertionCount);
|
|
28
|
+
}
|
|
17
29
|
export function printValidationReport(results, policyAssertionCount) {
|
|
18
|
-
// Group results by category
|
|
19
30
|
const byCategory = new Map();
|
|
20
|
-
for (const
|
|
21
|
-
const existing = byCategory.get(
|
|
22
|
-
byCategory.set(
|
|
31
|
+
for (const result of results) {
|
|
32
|
+
const existing = byCategory.get(result.category) ?? [];
|
|
33
|
+
byCategory.set(result.category, [...existing, result]);
|
|
23
34
|
}
|
|
24
35
|
console.log('');
|
|
25
36
|
console.log(chalk.bold('Validation results:'));
|
|
37
|
+
console.log(` ${chalk.green('[ok]')} ${chalk.bold('Schema')} ${chalk.dim('-')} ${chalk.dim('manifest structure valid')}`);
|
|
26
38
|
for (const meta of CATEGORY_ORDER) {
|
|
27
39
|
const categoryResults = byCategory.get(meta.label) ?? [];
|
|
28
|
-
const errors = categoryResults.filter((
|
|
29
|
-
const warnings = categoryResults.filter((
|
|
40
|
+
const errors = categoryResults.filter((result) => result.severity === 'error');
|
|
41
|
+
const warnings = categoryResults.filter((result) => result.severity === 'warning');
|
|
30
42
|
const displayLabel = meta.label === 'policy' ? 'Policy assertions' : meta.label;
|
|
31
43
|
if (errors.length > 0) {
|
|
32
44
|
const desc = chalk.red(`${errors.length} error${errors.length !== 1 ? 's' : ''}`);
|
|
@@ -34,43 +46,39 @@ export function printValidationReport(results, policyAssertionCount) {
|
|
|
34
46
|
? `, ${chalk.yellow(`${warnings.length} warning${warnings.length !== 1 ? 's' : ''}`)}`
|
|
35
47
|
: '';
|
|
36
48
|
renderCategoryRow(chalk.red('[!!]'), displayLabel, desc + extra, [...errors, ...warnings]);
|
|
49
|
+
continue;
|
|
37
50
|
}
|
|
38
|
-
|
|
51
|
+
if (warnings.length > 0) {
|
|
39
52
|
const desc = chalk.yellow(`${warnings.length} warning${warnings.length !== 1 ? 's' : ''}`);
|
|
40
53
|
renderCategoryRow(chalk.yellow('[--]'), displayLabel, desc, warnings);
|
|
54
|
+
continue;
|
|
41
55
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
? chalk.dim('no assertions defined')
|
|
49
|
-
: chalk.dim(`${policyAssertionCount} rule${policyAssertionCount !== 1 ? 's' : ''} passed`);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
okDesc = chalk.dim(meta.okDescription);
|
|
53
|
-
}
|
|
54
|
-
console.log(` ${chalk.green('[ok]')} ${chalk.bold(displayLabel)} ${chalk.dim('—')} ${okDesc}`);
|
|
55
|
-
}
|
|
56
|
+
const okDesc = meta.label === 'policy' && policyAssertionCount !== undefined
|
|
57
|
+
? policyAssertionCount === 0
|
|
58
|
+
? chalk.dim('no assertions defined')
|
|
59
|
+
: chalk.dim(`${policyAssertionCount} rule${policyAssertionCount !== 1 ? 's' : ''} passed`)
|
|
60
|
+
: chalk.dim(meta.okDescription);
|
|
61
|
+
console.log(` ${chalk.green('[ok]')} ${chalk.bold(displayLabel)} ${chalk.dim('-')} ${okDesc}`);
|
|
56
62
|
}
|
|
57
63
|
console.log('');
|
|
58
|
-
const totalErrors = results.filter((
|
|
59
|
-
const totalWarnings = results.filter((
|
|
64
|
+
const totalErrors = results.filter((result) => result.severity === 'error').length;
|
|
65
|
+
const totalWarnings = results.filter((result) => result.severity === 'warning').length;
|
|
60
66
|
if (totalErrors === 0 && totalWarnings === 0) {
|
|
61
67
|
console.log(chalk.green('All checks passed.'));
|
|
62
68
|
}
|
|
63
69
|
else {
|
|
64
70
|
const parts = [];
|
|
65
|
-
if (totalErrors > 0)
|
|
71
|
+
if (totalErrors > 0) {
|
|
66
72
|
parts.push(chalk.red(`${totalErrors} error${totalErrors !== 1 ? 's' : ''}`));
|
|
67
|
-
|
|
73
|
+
}
|
|
74
|
+
if (totalWarnings > 0) {
|
|
68
75
|
parts.push(chalk.yellow(`${totalWarnings} warning${totalWarnings !== 1 ? 's' : ''}`));
|
|
76
|
+
}
|
|
69
77
|
console.log(`${parts.join(', ')} found.`);
|
|
70
78
|
}
|
|
71
79
|
console.log('');
|
|
72
80
|
}
|
|
73
81
|
export function hasErrors(results) {
|
|
74
|
-
return results.some((
|
|
82
|
+
return results.some((result) => result.severity === 'error');
|
|
75
83
|
}
|
|
76
84
|
//# sourceMappingURL=reporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/validator/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/validator/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAsBlE,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"}
|