@loomweaver/devkit 0.9.0-preview.1 → 0.9.0-preview.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.
Files changed (29) hide show
  1. package/package.json +9 -1
  2. package/src/index.d.ts +2 -0
  3. package/src/index.js +6 -1
  4. package/src/index.js.map +1 -1
  5. package/src/lib/validate/commands.d.ts +17 -0
  6. package/src/lib/validate/commands.js +178 -0
  7. package/src/lib/validate/commands.js.map +1 -0
  8. package/src/lib/validate/types.d.ts +1 -1
  9. package/src/lib/validate/typescript.d.ts +9 -0
  10. package/src/lib/validate/typescript.js +22 -0
  11. package/src/lib/validate/typescript.js.map +1 -0
  12. package/src/recipes/angular-distribution/readme.js +3 -3
  13. package/src/recipes/angular-distribution/readme.js.map +1 -1
  14. package/src/recipes/angular-distribution/recipe.js +29 -1
  15. package/src/recipes/angular-distribution/recipe.js.map +1 -1
  16. package/src/recipes/angular-weaver/agent-files.d.ts +1 -1
  17. package/src/recipes/angular-weaver/agent-files.js +7 -6
  18. package/src/recipes/angular-weaver/agent-files.js.map +1 -1
  19. package/src/recipes/angular-weaver/agent-panel.js +7 -1
  20. package/src/recipes/angular-weaver/agent-panel.js.map +1 -1
  21. package/src/recipes/angular-weaver/agent-stand-in.js +16 -4
  22. package/src/recipes/angular-weaver/agent-stand-in.js.map +1 -1
  23. package/src/recipes/angular-weaver/recipe.js +5 -14
  24. package/src/recipes/angular-weaver/recipe.js.map +1 -1
  25. package/src/recipes/angular-weaver/weaver-command.d.ts +3 -0
  26. package/src/recipes/angular-weaver/weaver-command.js +35 -0
  27. package/src/recipes/angular-weaver/weaver-command.js.map +1 -0
  28. package/src/recipes/angular-weaver/weaver-i18n.js +3 -1
  29. package/src/recipes/angular-weaver/weaver-i18n.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loomweaver/devkit",
3
- "version": "0.9.0-preview.1",
3
+ "version": "0.9.0-preview.3",
4
4
  "description": "LoomWeaver: open-source plugin platform for Angular workbenches. The Nx generators: weavers, distributions, frame plugins and the integration seams, plus the manifest and i18n validators.",
5
5
  "keywords": [
6
6
  "loomweaver",
@@ -20,6 +20,14 @@
20
20
  "@nx/devkit": "^23.1.1",
21
21
  "tslib": "^2.3.0"
22
22
  },
23
+ "peerDependencies": {
24
+ "typescript": ">=5.0.0"
25
+ },
26
+ "peerDependenciesMeta": {
27
+ "typescript": {
28
+ "optional": true
29
+ }
30
+ },
23
31
  "publishConfig": {
24
32
  "access": "public"
25
33
  },
package/src/index.d.ts CHANGED
@@ -17,3 +17,5 @@ export type { Finding, FindingLevel } from './lib/validate/types';
17
17
  export { validateManifest, KNOWN_CAPABILITIES, type ManifestLike, } from './lib/validate/manifest';
18
18
  export { validateI18nParity, type I18nBundle } from './lib/validate/i18n';
19
19
  export { validateCatalog, CATALOG_ENTRY_KEYS } from './lib/validate/catalog';
20
+ export { validateCommands, RUNTIME_NOTE, type CommandSource } from './lib/validate/commands';
21
+ export { loadTypeScript, type TypeScriptModule } from './lib/validate/typescript';
package/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CATALOG_ENTRY_KEYS = exports.validateCatalog = exports.validateI18nParity = exports.KNOWN_CAPABILITIES = exports.validateManifest = exports.usageFor = exports.portableOptions = exports.nxSchemaFor = exports.kebabCase = exports.findScaffold = exports.SCAFFOLDS = exports.resolveLayoutInput = exports.layout = exports.resolveThemeInput = exports.theme = exports.resolveSettingsStoreInput = exports.settingsStore = exports.resolveAuthSourceInput = exports.authSource = exports.resolveDistributionInput = exports.angularDistribution = exports.resolveFramePluginInput = exports.framePlugin = exports.resolveWeaverInput = exports.angularWeaver = exports.toTitleCase = exports.toPascalCase = exports.toCamelCase = exports.isKebabId = exports.describeAmendment = exports.composePlugin = exports.composeLines = exports.resolveAssetInput = exports.joinProjectPath = exports.ensureStylesheetSource = exports.ensurePostcssPlugin = exports.ensureDependency = exports.ensureBuildTarget = exports.generate = exports.amendments = void 0;
3
+ exports.loadTypeScript = exports.RUNTIME_NOTE = exports.validateCommands = exports.CATALOG_ENTRY_KEYS = exports.validateCatalog = exports.validateI18nParity = exports.KNOWN_CAPABILITIES = exports.validateManifest = exports.usageFor = exports.portableOptions = exports.nxSchemaFor = exports.kebabCase = exports.findScaffold = exports.SCAFFOLDS = exports.resolveLayoutInput = exports.layout = exports.resolveThemeInput = exports.theme = exports.resolveSettingsStoreInput = exports.settingsStore = exports.resolveAuthSourceInput = exports.authSource = exports.resolveDistributionInput = exports.angularDistribution = exports.resolveFramePluginInput = exports.framePlugin = exports.resolveWeaverInput = exports.angularWeaver = exports.toTitleCase = exports.toPascalCase = exports.toCamelCase = exports.isKebabId = exports.describeAmendment = exports.composePlugin = exports.composeLines = exports.resolveAssetInput = exports.joinProjectPath = exports.ensureStylesheetSource = exports.ensurePostcssPlugin = exports.ensureDependency = exports.ensureBuildTarget = exports.generate = exports.amendments = void 0;
4
4
  var generate_1 = require("./lib/generate/generate");
5
5
  Object.defineProperty(exports, "amendments", { enumerable: true, get: function () { return generate_1.amendments; } });
6
6
  Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return generate_1.generate; } });
@@ -57,4 +57,9 @@ Object.defineProperty(exports, "validateI18nParity", { enumerable: true, get: fu
57
57
  var catalog_1 = require("./lib/validate/catalog");
58
58
  Object.defineProperty(exports, "validateCatalog", { enumerable: true, get: function () { return catalog_1.validateCatalog; } });
59
59
  Object.defineProperty(exports, "CATALOG_ENTRY_KEYS", { enumerable: true, get: function () { return catalog_1.CATALOG_ENTRY_KEYS; } });
60
+ var commands_1 = require("./lib/validate/commands");
61
+ Object.defineProperty(exports, "validateCommands", { enumerable: true, get: function () { return commands_1.validateCommands; } });
62
+ Object.defineProperty(exports, "RUNTIME_NOTE", { enumerable: true, get: function () { return commands_1.RUNTIME_NOTE; } });
63
+ var typescript_1 = require("./lib/validate/typescript");
64
+ Object.defineProperty(exports, "loadTypeScript", { enumerable: true, get: function () { return typescript_1.loadTypeScript; } });
60
65
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/tooling/devkit/src/index.ts"],"names":[],"mappings":";;;AACA,oDAA+D;AAAtD,sGAAA,UAAU,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAU7B,2CAQ2B;AAPzB,0GAAA,iBAAiB,OAAA;AACjB,yGAAA,gBAAgB,OAAA;AAChB,4GAAA,mBAAmB,OAAA;AACnB,+GAAA,sBAAsB,OAAA;AACtB,wGAAA,eAAe,OAAA;AACf,0GAAA,iBAAiB,OAAA;AAGnB,+CAI6B;AAH3B,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AAGf,iDAAyD;AAAhD,6GAAA,iBAAiB,OAAA;AAC1B,gDAK+B;AAJ7B,mGAAA,SAAS,OAAA;AACT,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA;AACZ,qGAAA,WAAW,OAAA;AAEb,0DAKyC;AAJvC,uGAAA,aAAa,OAAA;AACb,4GAAA,kBAAkB,OAAA;AAIpB,wDAKuC;AAJrC,qGAAA,WAAW,OAAA;AACX,iHAAA,uBAAuB,OAAA;AAIzB,gEAK+C;AAJ7C,6GAAA,mBAAmB,OAAA;AACnB,kHAAA,wBAAwB,OAAA;AAI1B,uDAKsC;AAJpC,oGAAA,UAAU,OAAA;AACV,gHAAA,sBAAsB,OAAA;AAIxB,0DAKyC;AAJvC,uGAAA,aAAa,OAAA;AACb,mHAAA,yBAAyB,OAAA;AAI3B,iDAKgC;AAJ9B,+FAAA,KAAK,OAAA;AACL,2GAAA,iBAAiB,OAAA;AAInB,kDAKiC;AAJ/B,gGAAA,MAAM,OAAA;AACN,4GAAA,kBAAkB,OAAA;AAIpB,uDAUmC;AATjC,sGAAA,SAAS,OAAA;AACT,yGAAA,YAAY,OAAA;AACZ,sGAAA,SAAS,OAAA;AACT,wGAAA,WAAW,OAAA;AACX,4GAAA,eAAe,OAAA;AACf,qGAAA,QAAQ,OAAA;AAMV,oDAIiC;AAH/B,4GAAA,gBAAgB,OAAA;AAChB,8GAAA,kBAAkB,OAAA;AAGpB,4CAA0E;AAAjE,0GAAA,kBAAkB,OAAA;AAC3B,kDAA6E;AAApE,0GAAA,eAAe,OAAA;AAAE,6GAAA,kBAAkB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/tooling/devkit/src/index.ts"],"names":[],"mappings":";;;AACA,oDAA+D;AAAtD,sGAAA,UAAU,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAU7B,2CAQ2B;AAPzB,0GAAA,iBAAiB,OAAA;AACjB,yGAAA,gBAAgB,OAAA;AAChB,4GAAA,mBAAmB,OAAA;AACnB,+GAAA,sBAAsB,OAAA;AACtB,wGAAA,eAAe,OAAA;AACf,0GAAA,iBAAiB,OAAA;AAGnB,+CAI6B;AAH3B,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AAGf,iDAAyD;AAAhD,6GAAA,iBAAiB,OAAA;AAC1B,gDAK+B;AAJ7B,mGAAA,SAAS,OAAA;AACT,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA;AACZ,qGAAA,WAAW,OAAA;AAEb,0DAKyC;AAJvC,uGAAA,aAAa,OAAA;AACb,4GAAA,kBAAkB,OAAA;AAIpB,wDAKuC;AAJrC,qGAAA,WAAW,OAAA;AACX,iHAAA,uBAAuB,OAAA;AAIzB,gEAK+C;AAJ7C,6GAAA,mBAAmB,OAAA;AACnB,kHAAA,wBAAwB,OAAA;AAI1B,uDAKsC;AAJpC,oGAAA,UAAU,OAAA;AACV,gHAAA,sBAAsB,OAAA;AAIxB,0DAKyC;AAJvC,uGAAA,aAAa,OAAA;AACb,mHAAA,yBAAyB,OAAA;AAI3B,iDAKgC;AAJ9B,+FAAA,KAAK,OAAA;AACL,2GAAA,iBAAiB,OAAA;AAInB,kDAKiC;AAJ/B,gGAAA,MAAM,OAAA;AACN,4GAAA,kBAAkB,OAAA;AAIpB,uDAUmC;AATjC,sGAAA,SAAS,OAAA;AACT,yGAAA,YAAY,OAAA;AACZ,sGAAA,SAAS,OAAA;AACT,wGAAA,WAAW,OAAA;AACX,4GAAA,eAAe,OAAA;AACf,qGAAA,QAAQ,OAAA;AAMV,oDAIiC;AAH/B,4GAAA,gBAAgB,OAAA;AAChB,8GAAA,kBAAkB,OAAA;AAGpB,4CAA0E;AAAjE,0GAAA,kBAAkB,OAAA;AAC3B,kDAA6E;AAApE,0GAAA,eAAe,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAC5C,oDAA6F;AAApF,4GAAA,gBAAgB,OAAA;AAAE,wGAAA,YAAY,OAAA;AACvC,wDAAkF;AAAzE,4GAAA,cAAc,OAAA"}
@@ -0,0 +1,17 @@
1
+ import { Finding } from './types';
2
+ import type { TypeScriptModule } from './typescript';
3
+ /** One source file the command check reads: its path, for the report, and its text. */
4
+ export interface CommandSource {
5
+ readonly path: string;
6
+ readonly text: string;
7
+ }
8
+ /** The line every report ends with: what the check did not judge, because only the running workbench can. */
9
+ export declare const RUNTIME_NOTE = "Grants, access and the window decide what is finally offered at runtime; this check judged the registrations alone.";
10
+ /**
11
+ * Reads every `registerCommand` literal in the given sources and reports, per command, whether an
12
+ * agent is offered it, what would leave the agent guessing, or that the registration could not be
13
+ * read. Only a callable command without a description is a warning; the rest is information, so a
14
+ * plugin with private commands passes a strict run. The TypeScript compiler is passed in rather
15
+ * than imported, so the check costs nothing where it is not used.
16
+ */
17
+ export declare function validateCommands(sources: readonly CommandSource[], ts: TypeScriptModule): Finding[];
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RUNTIME_NOTE = void 0;
4
+ exports.validateCommands = validateCommands;
5
+ /** The line every report ends with: what the check did not judge, because only the running workbench can. */
6
+ exports.RUNTIME_NOTE = 'Grants, access and the window decide what is finally offered at runtime; this check judged the registrations alone.';
7
+ /**
8
+ * Reads every `registerCommand` literal in the given sources and reports, per command, whether an
9
+ * agent is offered it, what would leave the agent guessing, or that the registration could not be
10
+ * read. Only a callable command without a description is a warning; the rest is information, so a
11
+ * plugin with private commands passes a strict run. The TypeScript compiler is passed in rather
12
+ * than imported, so the check costs nothing where it is not used.
13
+ */
14
+ function validateCommands(sources, ts) {
15
+ const findings = [];
16
+ for (const source of sources) {
17
+ const file = ts.createSourceFile(source.path, source.text, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
18
+ for (const call of registerCommandCalls(ts, file)) {
19
+ findings.push(...judge(read(ts, file, call)));
20
+ }
21
+ }
22
+ findings.push({ level: 'info', code: 'commands.runtime', message: exports.RUNTIME_NOTE });
23
+ return findings;
24
+ }
25
+ function registerCommandCalls(ts, file) {
26
+ const calls = [];
27
+ const visit = (node) => {
28
+ if (ts.isCallExpression(node) &&
29
+ ts.isPropertyAccessExpression(node.expression) &&
30
+ node.expression.name.text === 'registerCommand') {
31
+ calls.push(node);
32
+ }
33
+ ts.forEachChild(node, visit);
34
+ };
35
+ visit(file);
36
+ return calls;
37
+ }
38
+ function read(ts, file, call) {
39
+ const line = file.getLineAndCharacterOfPosition(call.getStart(file)).line + 1;
40
+ const at = `${file.fileName}:${line}`;
41
+ const literal = call.arguments[0];
42
+ const empty = { at, callable: false, described: false, answers: false, returnsValue: false, arguments: [] };
43
+ if (!literal || !ts.isObjectLiteralExpression(literal)) {
44
+ return { ...empty, unreadable: 'its argument is not an object literal' };
45
+ }
46
+ const properties = new Map();
47
+ for (const property of literal.properties) {
48
+ if (ts.isSpreadAssignment(property)) {
49
+ return { ...empty, unreadable: 'it spreads another value into the registration' };
50
+ }
51
+ if (ts.isPropertyAssignment(property) && (ts.isIdentifier(property.name) || ts.isStringLiteral(property.name))) {
52
+ properties.set(property.name.text, property.initializer);
53
+ }
54
+ else if (ts.isMethodDeclaration(property) && ts.isIdentifier(property.name)) {
55
+ properties.set(property.name.text, property);
56
+ }
57
+ }
58
+ const id = properties.get('id');
59
+ if (!id || !ts.isStringLiteral(id)) {
60
+ return { ...empty, unreadable: 'its id is not a string literal' };
61
+ }
62
+ const callable = properties.get('callable');
63
+ return {
64
+ at,
65
+ id: id.text,
66
+ callable: callable !== undefined && callable.kind === ts.SyntaxKind.TrueKeyword,
67
+ described: properties.has('description'),
68
+ answers: properties.has('answers'),
69
+ returnsValue: returnsValue(ts, properties.get('run')),
70
+ arguments: readArguments(ts, properties.get('arguments')),
71
+ };
72
+ }
73
+ function readArguments(ts, value) {
74
+ if (!value || !ts.isArrayLiteralExpression(value)) {
75
+ return [];
76
+ }
77
+ return value.elements.map((element, index) => {
78
+ if (!ts.isObjectLiteralExpression(element)) {
79
+ return { name: `#${index + 1}`, described: false };
80
+ }
81
+ let name = `#${index + 1}`;
82
+ let described = false;
83
+ for (const property of element.properties) {
84
+ if (!ts.isPropertyAssignment(property) || !ts.isIdentifier(property.name)) {
85
+ continue;
86
+ }
87
+ if (property.name.text === 'name' && ts.isStringLiteral(property.initializer)) {
88
+ name = property.initializer.text;
89
+ }
90
+ if (property.name.text === 'description') {
91
+ described = true;
92
+ }
93
+ }
94
+ return { name, described };
95
+ });
96
+ }
97
+ function returnsValue(ts, run) {
98
+ if (!run) {
99
+ return false;
100
+ }
101
+ if (ts.isArrowFunction(run) && !ts.isBlock(run.body)) {
102
+ return ts.isObjectLiteralExpression(run.body) || ts.isArrayLiteralExpression(run.body);
103
+ }
104
+ let found = false;
105
+ const visit = (node) => {
106
+ if (found || ts.isFunctionLike(node) && node !== run) {
107
+ return;
108
+ }
109
+ if (ts.isReturnStatement(node) && node.expression && node.expression.kind !== ts.SyntaxKind.UndefinedKeyword) {
110
+ found = true;
111
+ return;
112
+ }
113
+ ts.forEachChild(node, visit);
114
+ };
115
+ visit(run);
116
+ return found;
117
+ }
118
+ function judge(registration) {
119
+ const { at, id } = registration;
120
+ if (registration.unreadable) {
121
+ return [
122
+ {
123
+ level: 'info',
124
+ code: 'command.unreadable',
125
+ path: at,
126
+ message: `A registerCommand call at ${at} could not be read: ${registration.unreadable}. What it offers an agent is unknown here.`,
127
+ },
128
+ ];
129
+ }
130
+ if (!registration.callable) {
131
+ return [
132
+ {
133
+ level: 'info',
134
+ code: 'command.private',
135
+ path: at,
136
+ message: `${id}: not offered to an agent, because it is not callable; an agent never sees it.`,
137
+ },
138
+ ];
139
+ }
140
+ const findings = [];
141
+ if (!registration.described) {
142
+ findings.push({
143
+ level: 'warning',
144
+ code: 'command.description',
145
+ path: at,
146
+ message: `${id}: offered to an agent without a description; the agent sees only the id and has to guess what it does.`,
147
+ });
148
+ }
149
+ for (const argument of registration.arguments) {
150
+ if (!argument.described) {
151
+ findings.push({
152
+ level: 'info',
153
+ code: 'command.argument',
154
+ path: at,
155
+ message: `${id}: argument "${argument.name}" has no description; an agent sees a bare name and guesses its value.`,
156
+ });
157
+ }
158
+ }
159
+ if (registration.returnsValue && !registration.answers) {
160
+ findings.push({
161
+ level: 'info',
162
+ code: 'command.answers',
163
+ path: at,
164
+ message: `${id}: run returns a value but declares no answers; an agent hears that the command ran, not what it answered.`,
165
+ });
166
+ }
167
+ if (findings.length === 0) {
168
+ const count = registration.arguments.length;
169
+ findings.push({
170
+ level: 'info',
171
+ code: 'command.offered',
172
+ path: at,
173
+ message: `${id}: offered to an agent, with ${count} described argument${count === 1 ? '' : 's'}${registration.answers ? ' and a declared answer' : ''}.`,
174
+ });
175
+ }
176
+ return findings;
177
+ }
178
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/lib/validate/commands.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type FindingLevel = 'error' | 'warning';
1
+ export type FindingLevel = 'error' | 'warning' | 'info';
2
2
  export interface Finding {
3
3
  readonly level: FindingLevel;
4
4
  readonly code: string;
@@ -0,0 +1,9 @@
1
+ import type * as TS from 'typescript';
2
+ /** The TypeScript compiler API, as the command check needs it. */
3
+ export type TypeScriptModule = typeof TS;
4
+ /**
5
+ * Resolves the TypeScript compiler the way a project's own tooling would: from the directory being
6
+ * checked first, then from the working directory. Returns null where neither has it, so the caller
7
+ * can say so instead of failing inside the compiler.
8
+ */
9
+ export declare function loadTypeScript(fromDir: string): TypeScriptModule | null;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadTypeScript = loadTypeScript;
4
+ const node_module_1 = require("node:module");
5
+ const node_path_1 = require("node:path");
6
+ /**
7
+ * Resolves the TypeScript compiler the way a project's own tooling would: from the directory being
8
+ * checked first, then from the working directory. Returns null where neither has it, so the caller
9
+ * can say so instead of failing inside the compiler.
10
+ */
11
+ function loadTypeScript(fromDir) {
12
+ for (const from of [(0, node_path_1.resolve)(fromDir, 'package.json'), (0, node_path_1.resolve)(process.cwd(), 'package.json')]) {
13
+ try {
14
+ return (0, node_module_1.createRequire)(from)('typescript');
15
+ }
16
+ catch {
17
+ continue;
18
+ }
19
+ }
20
+ return null;
21
+ }
22
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/lib/validate/typescript.ts"],"names":[],"mappings":";;AAYA,wCASC;AArBD,6CAA4C;AAC5C,yCAAoC;AAMpC;;;;GAIG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC5C,KAAK,MAAM,IAAI,IAAI,CAAC,IAAA,mBAAO,EAAC,OAAO,EAAE,cAAc,CAAC,EAAE,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC9F,IAAI,CAAC;YACH,OAAO,IAAA,2BAAa,EAAC,IAAI,CAAC,CAAC,YAAY,CAAqB,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -65,9 +65,9 @@ function readme(d) {
65
65
  "project's `project.json`, keeping the targets, `implicitDependencies` and tags it already had.",
66
66
  '',
67
67
  'Two leftovers from `ng new` are no longer referenced and can go: `src/app/app.routes.ts` (the',
68
- 'shell owns content routing via `provideShellRouter()`) and `src/app/app.css`. The generated',
69
- '`src/app/app.spec.ts` now fails — `App` pulls the whole shell into a bare `TestBed` — so delete',
70
- 'it and test your own components instead of the composition root.',
68
+ 'shell owns content routing via `provideShellRouter()`) and `src/app/app.css`. The starter test',
69
+ '`src/app/app.spec.ts` was replaced by one that boots the shell with this composition root, so',
70
+ '`ng test` is green as generated; test your own components beside it.',
71
71
  '',
72
72
  'The project is generated **untagged**: Nx tags belong to your `depConstraints`, and inventing',
73
73
  'one would fail a lint policy you never opted this project into. If your workspace enforces',
@@ -1 +1 @@
1
- {"version":3,"file":"readme.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-distribution/readme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readme.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-distribution/readme.ts"],"names":[],"mappings":";;AA0CA,wBA2KC;AAnND,SAAS,WAAW,CAAC,CAAuB;IAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QAC/B,OAAO;YACL,+FAA+F;YAC/F,gGAAgG;YAChG,4FAA4F;YAC5F,8BAA8B;YAC9B,EAAE;YACF,kGAAkG;YAClG,wFAAwF;YACxF,EAAE;YACF,mGAAmG;YACnG,iGAAiG;YACjG,mEAAmE;SACpE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,iGAAiG;QACjG,kGAAkG;QAClG,kGAAkG;QAClG,mGAAmG;QACnG,0DAA0D;QAC1D,EAAE;QACF,OAAO;QACP,yEAAyE;QACzE,KAAK;QACL,EAAE;QACF,iGAAiG;QACjG,8CAA8C;QAC9C,EAAE;QACF,kGAAkG;QAClG,gGAAgG;QAChG,kGAAkG;QAClG,EAAE;QACF,2FAA2F;QAC3F,4FAA4F;QAC5F,uCAAuC;KACxC,CAAC;AACJ,CAAC;AAED,SAAgB,MAAM,CAAC,CAAuB;IAC5C,OAAO;QACL,KAAK,CAAC,CAAC,KAAK,8BAA8B;QAC1C,EAAE;QACF,gGAAgG;QAChG,+FAA+F;QAC/F,2EAA2E;QAC3E,EAAE;QACF,WAAW;QACX,EAAE;QACF,uDAAuD;QACvD,EAAE;QACF,OAAO;QACP,YAAY,CAAC,CAAC,IAAI,EAAE;QACpB,KAAK;QACL,EAAE;QACF,+FAA+F;QAC/F,4FAA4F;QAC5F,iGAAiG;QACjG,6FAA6F;QAC7F,gGAAgG;QAChG,wFAAwF;QACxF,gGAAgG;QAChG,EAAE;QACF,+FAA+F;QAC/F,gGAAgG;QAChG,+FAA+F;QAC/F,sEAAsE;QACtE,EAAE;QACF,+FAA+F;QAC/F,4FAA4F;QAC5F,0FAA0F;QAC1F,sCAAsC;QACtC,EAAE;QACF,4DAA4D;QAC5D,EAAE;QACF,4FAA4F;QAC5F,sEAAsE;QACtE,EAAE;QACF,OAAO;QACP,4GAA4G;QAC5G,2GAA2G;QAC3G,EAAE;QACF,4CAA4C;QAC5C,gFAAgF;QAChF,qCAAqC;QACrC,KAAK;QACL,EAAE;QACF,iGAAiG;QACjG,wFAAwF;QACxF,0FAA0F;QAC1F,+BAA+B;QAC/B,EAAE;QACF,8FAA8F;QAC9F,+FAA+F;QAC/F,4EAA4E;QAC5E,2FAA2F;QAC3F,kGAAkG;QAClG,EAAE;QACF,iGAAiG;QACjG,4FAA4F;QAC5F,+FAA+F;QAC/F,+EAA+E;QAC/E,8FAA8F;QAC9F,4FAA4F;QAC5F,gGAAgG;QAChG,EAAE;QACF,iDAAiD;QACjD,EAAE;QACF,+FAA+F;QAC/F,+FAA+F;QAC/F,gGAAgG;QAChG,8FAA8F;QAC9F,yEAAyE;QACzE,EAAE;QACF,+FAA+F;QAC/F,8DAA8D;QAC9D,EAAE;QACF,OAAO;QACP,sFAAsF;QACtF,yFAAyF;QACzF,KAAK;QACL,EAAE;QACF,4FAA4F;QAC5F,0FAA0F;QAC1F,4FAA4F;QAC5F,6FAA6F;QAC7F,EAAE;QACF,kDAAkD;QAClD,EAAE;QACF,OAAO;QACP,+EAA+E;QAC/E,gFAAgF;QAChF,EAAE;QACF,uFAAuF;QACvF,wFAAwF;QACxF,8CAA8C;QAC9C,EAAE;QACF,2FAA2F;QAC3F,oFAAoF;QACpF,4EAA4E;QAC5E,EAAE;QACF,+DAA+D;QAC/D,iGAAiG;QACjG,KAAK;QACL,EAAE;QACF,wFAAwF;QACxF,iGAAiG;QACjG,+FAA+F;QAC/F,kFAAkF;QAClF,EAAE;QACF,WAAW;QACX,EAAE;QACF,GAAG,WAAW,CAAC,CAAC,CAAC;QACjB,EAAE;QACF,iBAAiB;QACjB,EAAE;QACF,2FAA2F;QAC3F,kGAAkG;QAClG,qEAAqE;QACrE,EAAE;QACF,gGAAgG;QAChG,kGAAkG;QAClG,6FAA6F;QAC7F,8FAA8F;QAC9F,gGAAgG;QAChG,kGAAkG;QAClG,kGAAkG;QAClG,mGAAmG;QACnG,kGAAkG;QAClG,kGAAkG;QAClG,qDAAqD;QACrD,EAAE;QACF,kGAAkG;QAClG,4FAA4F;QAC5F,oDAAoD;QACpD,EAAE;QACF,uCAAuC;QACvC,EAAE;QACF,8FAA8F;QAC9F,+FAA+F;QAC/F,oFAAoF;QACpF,EAAE;QACF,OAAO;QACP,2DAA2D;QAC3D,EAAE;QACF,4BAA4B;QAC5B,0EAA0E;QAC1E,uCAAuC;QACvC,mCAAmC;QACnC,SAAS;QACT,KAAK;QACL,EAAE;QACF,iGAAiG;QACjG,kGAAkG;QAClG,wFAAwF;QACxF,+FAA+F;QAC/F,iEAAiE;QACjE,EAAE;QACF,kGAAkG;QAClG,8FAA8F;QAC9F,+EAA+E;QAC/E,EAAE;QACF,iFAAiF;QACjF,wFAAwF;QACxF,kFAAkF;QAClF,qEAAqE;QACrE,8EAA8E;QAC9E,6CAA6C;QAC7C,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -111,6 +111,31 @@ describe('layout', () => {
111
111
  });
112
112
  `;
113
113
  }
114
+ function appSpec() {
115
+ return `import { TestBed } from '@angular/core/testing';
116
+ import { App } from './app';
117
+ import { appConfig } from './app.config';
118
+
119
+ /* The application's starter test, rewritten for a root component that renders the shell: it boots
120
+ with the composition root's own providers, so whatever you compose in is what the test boots
121
+ with, and it asserts only that the shell mounted. */
122
+ describe('App', () => {
123
+ beforeEach(async () => {
124
+ await TestBed.configureTestingModule({
125
+ imports: [App],
126
+ providers: appConfig.providers,
127
+ }).compileComponents();
128
+ });
129
+
130
+ it('boots the shell', async () => {
131
+ const fixture = TestBed.createComponent(App);
132
+ await fixture.whenStable();
133
+ const compiled = fixture.nativeElement as HTMLElement;
134
+ expect(compiled.querySelector('lw-shell')).toBeTruthy();
135
+ });
136
+ });
137
+ `;
138
+ }
114
139
  function indexHtml(d) {
115
140
  return `<!DOCTYPE html>
116
141
  <html lang="en">
@@ -229,7 +254,10 @@ exports.angularDistribution = {
229
254
  return {
230
255
  'src/main.ts': mainTs(),
231
256
  'src/app/app.config.ts': appConfigTs(d),
232
- ...(d.withTests && { 'src/app/app.config.spec.ts': appConfigSpec() }),
257
+ ...(d.withTests && {
258
+ 'src/app/app.config.spec.ts': appConfigSpec(),
259
+ 'src/app/app.spec.ts': appSpec(),
260
+ }),
233
261
  'src/app/app.ts': appTs(),
234
262
  'src/app/app.html': appHtml(),
235
263
  'src/index.html': indexHtml(d),
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-distribution/recipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-distribution/recipe.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import type { ResolvedWeaver } from './recipe';
6
6
  * declares as a peer: two different ranges resolve to two copies, and an event built by one is not
7
7
  * the event the other switches on. `check-agent-versions` fails the build when either drifts.
8
8
  */
9
- export declare const AG_UI_ADAPTER_VERSION = "0.9.0-preview.1";
9
+ export declare const AG_UI_ADAPTER_VERSION = "0.9.0-preview.3";
10
10
  export declare const AG_UI_PROTOCOL_VERSION = "0.0.x";
11
11
  export declare function agentSurfaceBlock(w: ResolvedWeaver): string;
12
12
  export declare function agentFiles(w: ResolvedWeaver): FileMap;
@@ -11,7 +11,7 @@ const agent_stand_in_1 = require("./agent-stand-in");
11
11
  * declares as a peer: two different ranges resolve to two copies, and an event built by one is not
12
12
  * the event the other switches on. `check-agent-versions` fails the build when either drifts.
13
13
  */
14
- exports.AG_UI_ADAPTER_VERSION = '0.9.0-preview.1';
14
+ exports.AG_UI_ADAPTER_VERSION = '0.9.0-preview.3';
15
15
  exports.AG_UI_PROTOCOL_VERSION = '0.0.x';
16
16
  function connectionFile(w) {
17
17
  return `import { signal } from '@angular/core';
@@ -77,7 +77,7 @@ function contextThat(confirms: boolean, ran: Asked[]): PluginContext {
77
77
  ],
78
78
  invokeCommand: (id: string, args?: CommandArguments) => {
79
79
  ran.push({ id, args });
80
- return Promise.resolve({ outcome: 'answered', value: 'it ran' });
80
+ return Promise.resolve({ outcome: 'answered', value: { tone: args?.['tone'] ?? 'info' } });
81
81
  },
82
82
  ui: { confirm: () => Promise.resolve(confirms) },
83
83
  } as unknown as PluginContext;
@@ -106,17 +106,17 @@ describe('${w.propertyName}Connection', () => {
106
106
  ),
107
107
  ).toBeNull();
108
108
  await tools.receive(
109
- event(EventType.TOOL_CALL_ARGS, { toolCallId: 'c1', delta: '{"who"' }),
109
+ event(EventType.TOOL_CALL_ARGS, { toolCallId: 'c1', delta: '{"tone"' }),
110
110
  );
111
111
  await tools.receive(
112
- event(EventType.TOOL_CALL_ARGS, { toolCallId: 'c1', delta: ':"you"}' }),
112
+ event(EventType.TOOL_CALL_ARGS, { toolCallId: 'c1', delta: ':"success"}' }),
113
113
  );
114
114
  const answer = await tools.receive(
115
115
  event(EventType.TOOL_CALL_END, { toolCallId: 'c1' }),
116
116
  );
117
117
 
118
- expect(ran).toEqual([{ id: '${w.id}.hello', args: { who: 'you' } }]);
119
- expect(answer?.content).toBe('it ran');
118
+ expect(ran).toEqual([{ id: '${w.id}.hello', args: { tone: 'success' } }]);
119
+ expect(JSON.parse(answer?.content ?? '{}').tone).toBe('success');
120
120
  expect(answer?.error).toBeUndefined();
121
121
  });
122
122
 
@@ -150,6 +150,7 @@ function agentSurfaceBlock(w) {
150
150
  ` title: '${w.id}.agent.title',`,
151
151
  ` icon: '${w.id}',`,
152
152
  " docks: ['right-panel'],",
153
+ ' padded: true,',
153
154
  ` component: ${w.className}AgentPanel,`,
154
155
  ' });',
155
156
  ].join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"agent-files.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/agent-files.ts"],"names":[],"mappings":";;;AAkJA,8CAUC;AAED,gCAWC;AAvKD,+CAA6D;AAC7D,qDAA+C;AAE/C;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,sBAAsB,GAAG,OAAO,CAAC;AAE9C,SAAS,cAAc,CAAC,CAAiB;IACvC,OAAO;;;;;;;;;;;;kCAYyB,CAAC,CAAC,EAAE;;;;kBAIpB,CAAC,CAAC,YAAY;;;;;;eAMjB,CAAC,CAAC,YAAY;;;;;;;;;;cAUf,CAAC,CAAC,EAAE;gBACF,CAAC,CAAC,EAAE;qBACC,CAAC,CAAC,EAAE;oBACL,CAAC,CAAC,EAAE;;;;;;;;;CASvB,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,CAAiB;IACjC,OAAO;;WAEE,CAAC,CAAC,YAAY,wBAAwB,CAAC,CAAC,EAAE;;;;;;;;;;eAUtC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,IAAI;;;;;;;;;;;;;;YAcjC,CAAC,CAAC,YAAY;;oBAEN,CAAC,CAAC,YAAY;8DAC4B,CAAC,CAAC,EAAE;;;;;oBAK9C,CAAC,CAAC,YAAY;;;;;;2BAMP,CAAC,CAAC,EAAE;;;;;;;;;;;;;;kCAcG,CAAC,CAAC,EAAE;;;;;;;oBAOlB,CAAC,CAAC,YAAY;;;;;yBAKT,CAAC,CAAC,EAAE;;;;;;;;;;;;;;CAc5B,CAAC;AACF,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAiB;IACjD,OAAO;QACL,2BAA2B;QAC3B,cAAc,CAAC,CAAC,EAAE,UAAU;QAC5B,iBAAiB,CAAC,CAAC,EAAE,gBAAgB;QACrC,gBAAgB,CAAC,CAAC,EAAE,IAAI;QACxB,+BAA+B;QAC/B,oBAAoB,CAAC,CAAC,SAAS,aAAa;QAC5C,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAgB,UAAU,CAAC,CAAiB;IAC1C,MAAM,KAAK,GAA2B;QACpC,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QACrD,CAAC,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,CAAC,EAAE,IAAA,4BAAW,EAAC,CAAC,CAAC;QACzD,CAAC,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,IAAA,uBAAS,EAAC,CAAC,CAAC;QACtD,CAAC,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,IAAA,+BAAiB,EAAC,CAAC,CAAC;KACjE,CAAC;IACF,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"agent-files.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/agent-files.ts"],"names":[],"mappings":";;;AAkJA,8CAWC;AAED,gCAWC;AAxKD,+CAA6D;AAC7D,qDAA+C;AAE/C;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,sBAAsB,GAAG,OAAO,CAAC;AAE9C,SAAS,cAAc,CAAC,CAAiB;IACvC,OAAO;;;;;;;;;;;;kCAYyB,CAAC,CAAC,EAAE;;;;kBAIpB,CAAC,CAAC,YAAY;;;;;;eAMjB,CAAC,CAAC,YAAY;;;;;;;;;;cAUf,CAAC,CAAC,EAAE;gBACF,CAAC,CAAC,EAAE;qBACC,CAAC,CAAC,EAAE;oBACL,CAAC,CAAC,EAAE;;;;;;;;;CASvB,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,CAAiB;IACjC,OAAO;;WAEE,CAAC,CAAC,YAAY,wBAAwB,CAAC,CAAC,EAAE;;;;;;;;;;eAUtC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,IAAI;;;;;;;;;;;;;;YAcjC,CAAC,CAAC,YAAY;;oBAEN,CAAC,CAAC,YAAY;8DAC4B,CAAC,CAAC,EAAE;;;;;oBAK9C,CAAC,CAAC,YAAY;;;;;;2BAMP,CAAC,CAAC,EAAE;;;;;;;;;;;;;;kCAcG,CAAC,CAAC,EAAE;;;;;;;oBAOlB,CAAC,CAAC,YAAY;;;;;yBAKT,CAAC,CAAC,EAAE;;;;;;;;;;;;;;CAc5B,CAAC;AACF,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAiB;IACjD,OAAO;QACL,2BAA2B;QAC3B,cAAc,CAAC,CAAC,EAAE,UAAU;QAC5B,iBAAiB,CAAC,CAAC,EAAE,gBAAgB;QACrC,gBAAgB,CAAC,CAAC,EAAE,IAAI;QACxB,+BAA+B;QAC/B,qBAAqB;QACrB,oBAAoB,CAAC,CAAC,SAAS,aAAa;QAC5C,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAgB,UAAU,CAAC,CAAiB;IAC1C,MAAM,KAAK,GAA2B;QACpC,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QACrD,CAAC,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,CAAC,EAAE,IAAA,4BAAW,EAAC,CAAC,CAAC;QACzD,CAAC,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,IAAA,uBAAS,EAAC,CAAC,CAAC;QACtD,CAAC,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,IAAA,+BAAiB,EAAC,CAAC,CAAC;KACjE,CAAC;IACF,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -30,6 +30,12 @@ export class ${w.className}AgentPanel {
30
30
  private runs = 0;
31
31
 
32
32
  constructor() {
33
+ this.refreshOffered();
34
+ }
35
+
36
+ // The list is read again whenever the panel gains focus, because the weaver's own translations
37
+ // and other plugins' commands may arrive after this component was built.
38
+ protected refreshOffered(): void {
33
39
  this.offered.set(${w.propertyName}Agent()?.list() ?? []);
34
40
  }
35
41
 
@@ -120,7 +126,7 @@ export class ${w.className}AgentPanel {
120
126
  `;
121
127
  }
122
128
  function panelTemplateFile(w) {
123
- return `<div class="flex h-full flex-col gap-3">
129
+ return `<div class="flex h-full flex-col gap-3" (focusin)="refreshOffered()">
124
130
  <p
125
131
  class="shrink-0 rounded-md border border-border bg-surface-raised px-3 py-2 text-xs text-content-muted"
126
132
  >
@@ -1 +1 @@
1
- {"version":3,"file":"agent-panel.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/agent-panel.ts"],"names":[],"mappings":";;AAEA,8BAoHC;AAED,8CAsEC;AA5LD,SAAgB,SAAS,CAAC,CAAiB;IACzC,OAAO;;WAEE,CAAC,CAAC,YAAY,mBAAmB,CAAC,CAAC,EAAE;8BAClB,CAAC,CAAC,EAAE;;;;;;;;;;eAUnB,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;oBACX,CAAC,CAAC,EAAE;;;eAGT,CAAC,CAAC,SAAS;;;;;;;;;;uBAUH,CAAC,CAAC,YAAY;;;;oBAIjB,CAAC,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFjC,CAAC;AACF,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAiB;IACjD,OAAO;;;;;yCAKgC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D5C,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"agent-panel.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/agent-panel.ts"],"names":[],"mappings":";;AAEA,8BA0HC;AAED,8CAsEC;AAlMD,SAAgB,SAAS,CAAC,CAAiB;IACzC,OAAO;;WAEE,CAAC,CAAC,YAAY,mBAAmB,CAAC,CAAC,EAAE;8BAClB,CAAC,CAAC,EAAE;;;;;;;;;;eAUnB,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;oBACX,CAAC,CAAC,EAAE;;;eAGT,CAAC,CAAC,SAAS;;;;;;;;;;;;;;;;uBAgBH,CAAC,CAAC,YAAY;;;;oBAIjB,CAAC,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFjC,CAAC;AACF,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAiB;IACjD,OAAO;;;;;yCAKgC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D5C,CAAC;AACF,CAAC"}
@@ -45,10 +45,10 @@ export async function* askAgent(
45
45
  toolCallName: picked.name,
46
46
  });
47
47
  // Arguments arrive in pieces, exactly as they do from a real model. The adapter assembles them;
48
- // nothing downstream ever sees a half-written call. A real agent fills them from the JSON Schema
49
- // the workbench described in picked.parameters; a stand-in has nothing to fill them from, so it
50
- // sends none and lets the command apply its own defaults.
51
- for (const piece of chunks(JSON.stringify({}), 4)) {
48
+ // nothing downstream ever sees a half-written call. The values come from the JSON Schema the
49
+ // workbench described in picked.parameters: the first declared choice of the first argument that
50
+ // has choices, and nothing for the rest, so the command applies its own defaults there.
51
+ for (const piece of chunks(JSON.stringify(sampleArguments(picked)), 4)) {
52
52
  yield event(EventType.TOOL_CALL_ARGS, { toolCallId, delta: piece });
53
53
  await pause();
54
54
  }
@@ -73,6 +73,18 @@ async function* speak(
73
73
  yield event(EventType.TEXT_MESSAGE_END, { messageId });
74
74
  }
75
75
 
76
+ function sampleArguments(tool: Tool): Record<string, unknown> {
77
+ const schema = tool.parameters as
78
+ | { properties?: Record<string, { enum?: readonly unknown[] }> }
79
+ | undefined;
80
+ for (const [name, property] of Object.entries(schema?.properties ?? {})) {
81
+ if (property.enum && property.enum.length > 0) {
82
+ return { [name]: property.enum[0] };
83
+ }
84
+ }
85
+ return {};
86
+ }
87
+
76
88
  function chunks(text: string, size: number): readonly string[] {
77
89
  const pieces: string[] = [];
78
90
  for (let at = 0; at < text.length; at += size) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-stand-in.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/agent-stand-in.ts"],"names":[],"mappings":";;AAEA,kCAwFC;AAxFD,SAAgB,WAAW,CAAC,CAAiB;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BQ,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4BJ,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCpB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"agent-stand-in.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/agent-stand-in.ts"],"names":[],"mappings":";;AAEA,kCAoGC;AApGD,SAAgB,WAAW,CAAC,CAAiB;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BQ,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4BJ,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CpB,CAAC;AACF,CAAC"}
@@ -8,6 +8,7 @@ const agent_files_1 = require("./agent-files");
8
8
  const weaver_terms_1 = require("./weaver-terms");
9
9
  const weaver_readme_1 = require("./weaver-readme");
10
10
  const weaver_i18n_1 = require("./weaver-i18n");
11
+ const weaver_command_1 = require("./weaver-command");
11
12
  const DEFAULT_MENU_SLOT = 'content/tab/context';
12
13
  const SURFACE_ICON = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="4" y="4" width="16" height="16" rx="3"/><path d="M8 9h8M8 13h8M8 17h5"/></svg>';
13
14
  function accessLiteral(spec) {
@@ -186,18 +187,6 @@ function railBlock(w) {
186
187
  lines.push(' });');
187
188
  return lines.join('\n');
188
189
  }
189
- function commandBlock(w) {
190
- return [
191
- ' ctx.registerCommand({',
192
- ` id: '${w.id}.hello',`,
193
- ` title: '${w.id}.action',`,
194
- ` description: '${w.id}.actionDescription',`,
195
- ` shortcut: '${w.features.shortcut}',`,
196
- ' callable: true,',
197
- ` run: () => ctx.ui.toast({ message: '${w.id}.action', kind: 'info' }),`,
198
- ' });',
199
- ].join('\n');
200
- }
201
190
  function barItemBlock(w) {
202
191
  return [
203
192
  ' ctx.registerBarItem({',
@@ -285,7 +274,7 @@ function pluginFile(w) {
285
274
  body.push(` ${w.propertyName}Agent.set(${w.propertyName}Connection(ctx));`);
286
275
  }
287
276
  if (w.features.command)
288
- body.push(commandBlock(w));
277
+ body.push((0, weaver_command_1.commandBlock)(w));
289
278
  if (w.features.about)
290
279
  body.push(aboutCommandBlock(w));
291
280
  body.push(surfaceBlock(w), railBlock(w));
@@ -302,9 +291,11 @@ function pluginFile(w) {
302
291
  const deactivate = w.features.agent
303
292
  ? `\n deactivate() {\n ${w.propertyName}Agent.set(null);\n },`
304
293
  : '';
294
+ if (w.features.command)
295
+ consts.push((0, weaver_command_1.toneHelper)());
305
296
  return `${imports.join('\n')}
306
297
 
307
- ${consts.join('\n')}
298
+ ${consts.join('\n\n')}
308
299
 
309
300
  export const ${w.propertyName}Plugin: Plugin = {
310
301
  manifest: {
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/recipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/recipe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ResolvedWeaver } from './recipe';
2
+ export declare function commandBlock(w: ResolvedWeaver): string;
3
+ export declare function toneHelper(): string;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.commandBlock = commandBlock;
4
+ exports.toneHelper = toneHelper;
5
+ function commandBlock(w) {
6
+ return [
7
+ ' ctx.registerCommand({',
8
+ ` id: '${w.id}.hello',`,
9
+ ` title: '${w.id}.action',`,
10
+ ` description: '${w.id}.actionDescription',`,
11
+ ' arguments: [',
12
+ ` { name: 'tone', kind: 'choice', choices: ['info', 'success', 'warning'], description: '${w.id}.actionTone' },`,
13
+ ' ],',
14
+ ` answers: '${w.id}.actionAnswers',`,
15
+ ` shortcut: '${w.features.shortcut}',`,
16
+ ' callable: true,',
17
+ ' run: (_context, args) => {',
18
+ " const tone = toneOf(args?.['tone']);",
19
+ ` ctx.ui.toast({ message: '${w.id}.action', kind: tone });`,
20
+ ' return { tone };',
21
+ ' },',
22
+ ' });',
23
+ ].join('\n');
24
+ }
25
+ function toneHelper() {
26
+ return [
27
+ "type Tone = 'info' | 'success' | 'warning';",
28
+ '',
29
+ '// The workbench already refused anything outside the declared choices; this narrows the type.',
30
+ 'function toneOf(value: unknown): Tone {',
31
+ " return value === 'success' || value === 'warning' ? value : 'info';",
32
+ '}',
33
+ ].join('\n');
34
+ }
35
+ //# sourceMappingURL=weaver-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weaver-command.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/weaver-command.ts"],"names":[],"mappings":";;AAEA,oCAmBC;AAED,gCASC;AA9BD,SAAgB,YAAY,CAAC,CAAiB;IAC5C,OAAO;QACL,2BAA2B;QAC3B,cAAc,CAAC,CAAC,EAAE,UAAU;QAC5B,iBAAiB,CAAC,CAAC,EAAE,WAAW;QAChC,uBAAuB,CAAC,CAAC,EAAE,sBAAsB;QACjD,oBAAoB;QACpB,kGAAkG,CAAC,CAAC,EAAE,iBAAiB;QACvH,UAAU;QACV,mBAAmB,CAAC,CAAC,EAAE,kBAAkB;QACzC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI;QAC3C,uBAAuB;QACvB,kCAAkC;QAClC,8CAA8C;QAC9C,oCAAoC,CAAC,CAAC,EAAE,0BAA0B;QAClE,0BAA0B;QAC1B,UAAU;QACV,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO;QACL,6CAA6C;QAC7C,EAAE;QACF,gGAAgG;QAChG,yCAAyC;QACzC,uEAAuE;QACvE,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -10,7 +10,9 @@ function i18nBundle(w) {
10
10
  }
11
11
  if (w.features.command) {
12
12
  bundle['action'] = `${w.name} action`;
13
- bundle['actionDescription'] = `Shows a short ${w.name} message.`;
13
+ bundle['actionDescription'] = `Shows a short ${w.name} message in the tone the caller chooses.`;
14
+ bundle['actionTone'] = 'How the message is shown: info, success or warning. Use info unless the caller asked for emphasis.';
15
+ bundle['actionAnswers'] = 'The tone the message was shown in.';
14
16
  }
15
17
  if (w.features.about)
16
18
  bundle['about'] = `About ${w.name}`;
@@ -1 +1 @@
1
- {"version":3,"file":"weaver-i18n.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/weaver-i18n.ts"],"names":[],"mappings":";;AAEA,gCA0BC;AAED,4BAEC;AA9BD,SAAgB,UAAU,CAAC,CAAiB;IAC1C,MAAM,MAAM,GAA4B,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;QAC5B,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;QACtC,MAAM,CAAC,mBAAmB,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,WAAW,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK;QAAE,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,YAAY;YAC5B,OAAO,EAAE;gBACP,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EACL,gEAAgE;gBAClE,GAAG,EAAE,QAAQ;gBACb,EAAE,EAAE,SAAS;aACd;SACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ;QACrB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAiB;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"weaver-i18n.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/weaver-i18n.ts"],"names":[],"mappings":";;AAEA,gCA4BC;AAED,4BAEC;AAhCD,SAAgB,UAAU,CAAC,CAAiB;IAC1C,MAAM,MAAM,GAA4B,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;QAC5B,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;QACtC,MAAM,CAAC,mBAAmB,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,0CAA0C,CAAC;QAChG,MAAM,CAAC,YAAY,CAAC,GAAG,oGAAoG,CAAC;QAC5H,MAAM,CAAC,eAAe,CAAC,GAAG,oCAAoC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK;QAAE,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,YAAY;YAC5B,OAAO,EAAE;gBACP,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EACL,gEAAgE;gBAClE,GAAG,EAAE,QAAQ;gBACb,EAAE,EAAE,SAAS;aACd;SACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ;QACrB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAiB;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACvD,CAAC"}