@loomweaver/devkit 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/lib/validate/commands.d.ts +4 -2
- package/src/lib/validate/commands.js +50 -2
- package/src/lib/validate/commands.js.map +1 -1
- package/src/recipes/angular-distribution/readme.js +4 -0
- package/src/recipes/angular-distribution/readme.js.map +1 -1
- package/src/recipes/angular-weaver/agent-files.d.ts +1 -1
- package/src/recipes/angular-weaver/agent-files.js +14 -8
- package/src/recipes/angular-weaver/agent-files.js.map +1 -1
- package/src/recipes/angular-weaver/weaver-command.js +7 -0
- package/src/recipes/angular-weaver/weaver-command.js.map +1 -1
- package/src/recipes/platform-version.d.ts +1 -1
- package/src/recipes/platform-version.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loomweaver/devkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
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",
|
|
@@ -10,8 +10,10 @@ export declare const RUNTIME_NOTE = "Grants, access and the window decide what i
|
|
|
10
10
|
/**
|
|
11
11
|
* Reads every `registerCommand` literal in the given sources and reports, per command, whether an
|
|
12
12
|
* agent is offered it, what would leave the agent guessing, or that the registration could not be
|
|
13
|
-
* read
|
|
14
|
-
*
|
|
13
|
+
* read, and — where it is offered — what the command says an agent's word is enough for, including
|
|
14
|
+
* that it says nothing. Only a callable command without a description is a warning; the rest is
|
|
15
|
+
* information, so a plugin with private commands passes a strict run. Nothing is guessed from an id
|
|
16
|
+
* or a title: saying nothing is a declaration the platform accepts. The TypeScript compiler is passed in rather
|
|
15
17
|
* than imported, so the check costs nothing where it is not used.
|
|
16
18
|
*/
|
|
17
19
|
export declare function validateCommands(sources: readonly CommandSource[], ts: TypeScriptModule): Finding[];
|
|
@@ -7,8 +7,10 @@ exports.RUNTIME_NOTE = 'Grants, access and the window decide what is finally off
|
|
|
7
7
|
/**
|
|
8
8
|
* Reads every `registerCommand` literal in the given sources and reports, per command, whether an
|
|
9
9
|
* agent is offered it, what would leave the agent guessing, or that the registration could not be
|
|
10
|
-
* read
|
|
11
|
-
*
|
|
10
|
+
* read, and — where it is offered — what the command says an agent's word is enough for, including
|
|
11
|
+
* that it says nothing. Only a callable command without a description is a warning; the rest is
|
|
12
|
+
* information, so a plugin with private commands passes a strict run. Nothing is guessed from an id
|
|
13
|
+
* or a title: saying nothing is a declaration the platform accepts. The TypeScript compiler is passed in rather
|
|
12
14
|
* than imported, so the check costs nothing where it is not used.
|
|
13
15
|
*/
|
|
14
16
|
function validateCommands(sources, ts) {
|
|
@@ -60,6 +62,7 @@ function read(ts, file, call) {
|
|
|
60
62
|
return { ...empty, unreadable: 'its id is not a string literal' };
|
|
61
63
|
}
|
|
62
64
|
const callable = properties.get('callable');
|
|
65
|
+
const consent = properties.get('agentConsent');
|
|
63
66
|
return {
|
|
64
67
|
at,
|
|
65
68
|
id: id.text,
|
|
@@ -68,8 +71,47 @@ function read(ts, file, call) {
|
|
|
68
71
|
answers: properties.has('answers'),
|
|
69
72
|
returnsValue: returnsValue(ts, properties.get('run')),
|
|
70
73
|
arguments: readArguments(ts, properties.get('arguments')),
|
|
74
|
+
...consentOf(ts, consent),
|
|
71
75
|
};
|
|
72
76
|
}
|
|
77
|
+
function consentOf(ts, declared) {
|
|
78
|
+
const value = unwrapped(ts, declared);
|
|
79
|
+
return value && ts.isStringLiteral(value)
|
|
80
|
+
? { agentConsent: value.text }
|
|
81
|
+
: {};
|
|
82
|
+
}
|
|
83
|
+
function unwrapped(ts, value) {
|
|
84
|
+
if (!value) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return ts.isAsExpression(value) ||
|
|
88
|
+
ts.isSatisfiesExpression(value) ||
|
|
89
|
+
ts.isParenthesizedExpression(value)
|
|
90
|
+
? unwrapped(ts, value.expression)
|
|
91
|
+
: value;
|
|
92
|
+
}
|
|
93
|
+
const STATED = ['allow', 'ask', 'ask-always', 'never'];
|
|
94
|
+
function consentLine(consent) {
|
|
95
|
+
switch (consent) {
|
|
96
|
+
case 'allow': {
|
|
97
|
+
return "says an agent's word is enough to run it.";
|
|
98
|
+
}
|
|
99
|
+
case 'ask': {
|
|
100
|
+
return "says the person is asked first; whoever runs it on an agent's behalf does the asking.";
|
|
101
|
+
}
|
|
102
|
+
case 'ask-always': {
|
|
103
|
+
return "says the person is asked every time; whoever runs it on an agent's behalf does the asking.";
|
|
104
|
+
}
|
|
105
|
+
case 'never': {
|
|
106
|
+
return "says it is not to be run on an agent's word; closing it to other callers is what enforces that.";
|
|
107
|
+
}
|
|
108
|
+
default: {
|
|
109
|
+
return consent === undefined
|
|
110
|
+
? "says nothing about whether an agent's word is enough to run it."
|
|
111
|
+
: `declares "${consent}" about an agent's word, which is none of ${STATED.join(', ')}, so nothing reads it.`;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
73
115
|
function readArguments(ts, value) {
|
|
74
116
|
if (!value || !ts.isArrayLiteralExpression(value)) {
|
|
75
117
|
return [];
|
|
@@ -173,6 +215,12 @@ function judge(registration) {
|
|
|
173
215
|
message: `${id}: offered to an agent, with ${count} described argument${count === 1 ? '' : 's'}${registration.answers ? ' and a declared answer' : ''}.`,
|
|
174
216
|
});
|
|
175
217
|
}
|
|
218
|
+
findings.push({
|
|
219
|
+
level: 'info',
|
|
220
|
+
code: 'command.consent',
|
|
221
|
+
path: at,
|
|
222
|
+
message: `${id}: ${consentLine(registration.agentConsent)}`,
|
|
223
|
+
});
|
|
176
224
|
return findings;
|
|
177
225
|
}
|
|
178
226
|
//# sourceMappingURL=commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/lib/validate/commands.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/lib/validate/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -196,6 +196,10 @@ function readme(d) {
|
|
|
196
196
|
'',
|
|
197
197
|
'A switch takes the **affordance and the gesture**: turning `splitRight` off removes the toolbar',
|
|
198
198
|
'button, the drop edges *and* `mod+\\`, so the capability cannot come back through a second door.',
|
|
199
|
+
'Two switches are finer, and named for it: `splitRightButton` and `splitDownButton` leave out the',
|
|
200
|
+
"pane toolbar's split button alone, for a product that offers splitting by dragging a tab to a",
|
|
201
|
+
"pane's edge. The command and the tab menu's entry are removed by naming them in",
|
|
202
|
+
'`provideShell({ omit })` instead, so each decision keeps one place.',
|
|
199
203
|
'Fields merge group by group, so name only what you turn off. The groups are `content`,',
|
|
200
204
|
'`sidebar`, `rail`, `workspaces`, `windows` and `commands`; everything is on by default except',
|
|
201
205
|
'`content.escalate`, the unlabelled double-click cycle on a tab.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readme.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-distribution/readme.ts"],"names":[],"mappings":";;AA0CA,
|
|
1
|
+
{"version":3,"file":"readme.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-distribution/readme.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
|
+
export declare const AG_UI_ADAPTER_VERSION = "0.12.0";
|
|
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.
|
|
14
|
+
exports.AG_UI_ADAPTER_VERSION = '0.12.0';
|
|
15
15
|
exports.AG_UI_PROTOCOL_VERSION = '0.0.x';
|
|
16
16
|
function connectionFile(w) {
|
|
17
17
|
return `import { signal } from '@angular/core';
|
|
@@ -23,11 +23,6 @@ import {
|
|
|
23
23
|
} from '@loomweaver/ag-ui';
|
|
24
24
|
import type { PluginContext } from '@loomweaver/plugin-sdk';
|
|
25
25
|
|
|
26
|
-
// Commands an agent may not run on its own word. Each one asks the person at the keyboard first, and
|
|
27
|
-
// declining stops it: the workbench never sees the call. This weaver's own command is listed as an
|
|
28
|
-
// example — replace it with the ones that actually cost something.
|
|
29
|
-
const CONSEQUENTIAL = new Set(['${w.id}.hello']);
|
|
30
|
-
|
|
31
26
|
// A factory, not a module-level connection: everything a run needs lives in the closure, so a second
|
|
32
27
|
// one never shares state with the first.
|
|
33
28
|
export function ${w.propertyName}Connection(ctx: PluginContext): CommandTools {
|
|
@@ -38,11 +33,21 @@ export function ${w.propertyName}Connection(ctx: PluginContext): CommandTools {
|
|
|
38
33
|
// deactivate(), so the panel renders an honest empty state either side of that.
|
|
39
34
|
export const ${w.propertyName}Agent = signal<CommandTools | null>(null);
|
|
40
35
|
|
|
36
|
+
// What an agent's word is enough for is the command's own statement, declared where the command is
|
|
37
|
+
// registered and read off the call here. No list of ids lives beside the commands: a list drifts from
|
|
38
|
+
// what it describes, and it cannot speak for a command another plugin registered. Acting on the
|
|
39
|
+
// statement is this weaver's half: the workbench states it and enforces nothing.
|
|
41
40
|
async function decide(
|
|
42
41
|
ctx: PluginContext,
|
|
43
42
|
call: PendingToolCall,
|
|
44
43
|
): Promise<ToolDecision> {
|
|
45
|
-
if (
|
|
44
|
+
if (call.agentConsent === 'never') {
|
|
45
|
+
return {
|
|
46
|
+
decision: 'decline',
|
|
47
|
+
reason: 'an agent may not run this one on its own word.',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (call.agentConsent !== 'ask' && call.agentConsent !== 'ask-always') {
|
|
46
51
|
return { decision: 'run' };
|
|
47
52
|
}
|
|
48
53
|
const yes = await ctx.ui.confirm({
|
|
@@ -73,7 +78,8 @@ interface Asked {
|
|
|
73
78
|
function contextThat(confirms: boolean, ran: Asked[]): PluginContext {
|
|
74
79
|
return {
|
|
75
80
|
invocableCommands: () => [
|
|
76
|
-
|
|
81
|
+
// agentConsent travels with the command, which is what the connection reads off the call.
|
|
82
|
+
{ id: '${w.id}.hello', title: '${w.name} action', description: 'Shows a short message.', agentConsent: 'ask' },
|
|
77
83
|
],
|
|
78
84
|
invokeCommand: (id: string, args?: CommandArguments) => {
|
|
79
85
|
ran.push({ id, args });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-files.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/agent-files.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"agent-files.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/agent-files.ts"],"names":[],"mappings":";;;AAwJA,8CAWC;AAED,gCAWC;AA9KD,+CAA6D;AAC7D,qDAA+C;AAE/C;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG,QAAQ,CAAC;AACjC,QAAA,sBAAsB,GAAG,OAAO,CAAC;AAE9C,SAAS,cAAc,CAAC,CAAiB;IACvC,OAAO;;;;;;;;;;;kBAWS,CAAC,CAAC,YAAY;;;;;;eAMjB,CAAC,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;cAoBf,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;;;;;;;;;;;eAWtC,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"}
|
|
@@ -14,6 +14,13 @@ function commandBlock(w) {
|
|
|
14
14
|
` answers: '${w.id}.actionAnswers',`,
|
|
15
15
|
` shortcut: '${w.features.shortcut}',`,
|
|
16
16
|
' callable: true,',
|
|
17
|
+
...(w.features.agent
|
|
18
|
+
? [
|
|
19
|
+
" // What an agent's word is enough for. The platform states it and enforces nothing:",
|
|
20
|
+
' // the asking is the connection\'s half, which reads this off the call.',
|
|
21
|
+
" agentConsent: 'ask',",
|
|
22
|
+
]
|
|
23
|
+
: []),
|
|
17
24
|
' run: (_context, args) => {',
|
|
18
25
|
" const tone = toneOf(args?.['tone']);",
|
|
19
26
|
` ctx.ui.toast({ message: '${w.id}.action', kind: tone });`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weaver-command.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/weaver-command.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"weaver-command.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/weaver-command.ts"],"names":[],"mappings":";;AAEA,oCA0BC;AAED,gCASC;AArCD,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,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;YAClB,CAAC,CAAC;gBACE,2FAA2F;gBAC3F,+EAA+E;gBAC/E,4BAA4B;aAC7B;YACH,CAAC,CAAC,EAAE,CAAC;QACP,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PLATFORM_VERSION = "0.
|
|
1
|
+
export declare const PLATFORM_VERSION = "0.12.0";
|