@intentset/cli 0.10.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/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +43 -2
- package/dist/agents.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +18 -3
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/graph.js +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts +49 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +295 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/shared.d.ts +8 -0
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +15 -5
- package/dist/commands/shared.js.map +1 -1
- package/dist/glob.d.ts +4 -13
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +4 -57
- package/dist/glob.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +78 -5
- package/dist/main.js.map +1 -1
- package/dist/session.d.ts +1 -2
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +2 -3
- package/dist/session.js.map +1 -1
- package/dist/slices.d.ts +3 -21
- package/dist/slices.d.ts.map +1 -1
- package/dist/slices.js +3 -45
- package/dist/slices.js.map +1 -1
- package/dist/subject.d.ts +2 -0
- package/dist/subject.d.ts.map +1 -1
- package/dist/subject.js +11 -1
- package/dist/subject.js.map +1 -1
- package/package.json +9 -9
- package/src/agents.ts +43 -2
- package/src/commands/context.ts +22 -2
- package/src/commands/graph.ts +1 -1
- package/src/commands/init.ts +10 -8
- package/src/commands/list.ts +346 -0
- package/src/commands/shared.ts +20 -0
- package/src/glob.ts +4 -56
- package/src/index.ts +2 -0
- package/src/main.ts +85 -6
- package/src/session.ts +2 -3
- package/src/slices.ts +3 -52
- package/src/subject.ts +13 -1
package/dist/agents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAEvD,6FAA6F;AAC7F,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAGlD,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5C,8GAA8G;AAC9G,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG,cAAc,CASjB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,cAAsB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAEvD,6FAA6F;AAC7F,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAGlD,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5C,8GAA8G;AAC9G,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG,cAAc,CASjB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,cAAsB,GAAG,MAAM,CAsN5F"}
|
package/dist/agents.js
CHANGED
|
@@ -75,6 +75,10 @@ Update the records in the same change as the code.
|
|
|
75
75
|
slice is a draft, the paths it plans may not exist yet.
|
|
76
76
|
- A changed check: a verification record names the test that checks a claim. Change the test and its record
|
|
77
77
|
together, and add one for a behavior or rule that has none.
|
|
78
|
+
- Whether the work is built: a capability, behavior, rule, scenario, slice or contract says so in \`delivery\`.
|
|
79
|
+
Write \`delivery: built\` on a record you wrote from code that exists, \`delivery: planned\` on one that proposes
|
|
80
|
+
work, and change \`planned\` to \`built\` in the change that builds it. It states a fact about the code, not an
|
|
81
|
+
approval, so you may set it; a draft that says \`built\` is still a draft until a person approves it.
|
|
78
82
|
|
|
79
83
|
Write each link once, on the record that points: a behavior is \`governedBy\` its rules, a scenario \`illustrates\`
|
|
80
84
|
a behavior, a slice \`implements\` behaviors, a verification \`verifies\` what it checks. Never write the reverse.
|
|
@@ -124,8 +128,10 @@ level-one heading repeats its title. Plain Markdown is valid Markset. For the re
|
|
|
124
128
|
callouts, tables and other constructs a record may use and the codes \`validate\` reports for them, read Markset's
|
|
125
129
|
guide at ${MARKSET_GUIDE_URL}, or print it with \`${markset}\`.
|
|
126
130
|
|
|
127
|
-
An existing record of the same type in this repository is the best template; a
|
|
128
|
-
|
|
131
|
+
An existing record of the same type in this repository is the best template; in a repository with none yet,
|
|
132
|
+
\`${run} init --example --root <an empty directory>\` writes one record of each type there to read. A capability sits
|
|
133
|
+
under an outcome, an outcome under an intent, and an intent under the product, so the first capability brings those
|
|
134
|
+
three with it. A new behavior looks like this, one recognizable promise including how it fails:
|
|
129
135
|
|
|
130
136
|
\`\`\`markdown
|
|
131
137
|
---
|
|
@@ -137,6 +143,7 @@ intentset:
|
|
|
137
143
|
type: behavior
|
|
138
144
|
title: The promise in a few words, such as Schedule a student assessment
|
|
139
145
|
status: draft
|
|
146
|
+
delivery: planned
|
|
140
147
|
owner: <an owner from the registry>
|
|
141
148
|
visibility: internal
|
|
142
149
|
audiences: [engineering, product]
|
|
@@ -163,6 +170,40 @@ What must be true first.
|
|
|
163
170
|
Success: what happens. Failure: what is rejected, and what is left unchanged.
|
|
164
171
|
\`\`\`
|
|
165
172
|
|
|
173
|
+
A verification record binds a check to what it verifies. An automated one names the test file and a selector the
|
|
174
|
+
test's title holds as whole words (a \`describe\`'s name binds all of its tests), which is how \`evidence import\`
|
|
175
|
+
matches a run to it:
|
|
176
|
+
|
|
177
|
+
\`\`\`markdown
|
|
178
|
+
---
|
|
179
|
+
markset: 0
|
|
180
|
+
intentset:
|
|
181
|
+
spec: '0.2'
|
|
182
|
+
profile: intentset/verification/0.2
|
|
183
|
+
id: TEST-AREA-NAME
|
|
184
|
+
type: verification
|
|
185
|
+
title: What the check proves, such as Unit test of scheduling an assessment
|
|
186
|
+
status: draft
|
|
187
|
+
owner: <an owner from the registry>
|
|
188
|
+
visibility: internal
|
|
189
|
+
audiences: [engineering]
|
|
190
|
+
links:
|
|
191
|
+
verifies: [BEH-AREA-NAME, RULE-AREA-LIMIT]
|
|
192
|
+
verification:
|
|
193
|
+
method: automated
|
|
194
|
+
locator: src/area/name.test.ts
|
|
195
|
+
selector: the test's title, or the describe's name
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
# What the check proves, such as Unit test of scheduling an assessment
|
|
199
|
+
|
|
200
|
+
## Procedure
|
|
201
|
+
The runner and the file, and the cases it covers, the failure cases included.
|
|
202
|
+
|
|
203
|
+
## Expected result
|
|
204
|
+
What a pass shows.
|
|
205
|
+
\`\`\`
|
|
206
|
+
|
|
166
207
|
A knowledge record explains behaviors, rules or capabilities to one audience, in that audience's words rather than
|
|
167
208
|
the behavior's. It may carry \`tips\`: one plain sentence per explained ID, at most 160 characters, which the
|
|
168
209
|
product shows beside the control that delivers that behavior once the knowledge is reviewed and published.
|
package/dist/agents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD,CAAC,WAAW,EAAE,IAAI,gBAAgB,EAAE,CAAC;IACrC,CAAC,WAAW,EAAE,8BAA8B,gBAAgB,iBAAiB,CAAC;CAC/E,CAAC;AAKF,8GAA8G;AAC9G,MAAM,UAAU,oBAAoB,CAAC,KAGpC;IACC,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAAE,OAAO,MAAM,CAAC;IACnF,IAAI,CAAC;QACH,MAAM,OAAO,GAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAkC,CAAC,cAAc,CAAC;QACvG,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,MAAM,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;IACvE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAwB,EAAE,OAAO,GAAmB,KAAK;IAClF,MAAM,GAAG,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,eAAe,CAAC;IACzE,MAAM,OAAO,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,6BAA6B,CAAC;IACxG,MAAM,QAAQ,GACZ,OAAO,KAAK,MAAM;QAChB,CAAC,CAAC,wEAAwE;QAC1E,CAAC,CAAC,qDAAqD,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CACjC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAClG,CAAC;IACF,OAAO;;;iGAGwF,KAAK;;;;;iCAKrE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO;IACtD,GAAG,uBAAuB,GAAG;;;;;;;EAO/B,GAAG;EACH,GAAG
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD,CAAC,WAAW,EAAE,IAAI,gBAAgB,EAAE,CAAC;IACrC,CAAC,WAAW,EAAE,8BAA8B,gBAAgB,iBAAiB,CAAC;CAC/E,CAAC;AAKF,8GAA8G;AAC9G,MAAM,UAAU,oBAAoB,CAAC,KAGpC;IACC,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAAE,OAAO,MAAM,CAAC;IACnF,IAAI,CAAC;QACH,MAAM,OAAO,GAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAkC,CAAC,cAAc,CAAC;QACvG,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,MAAM,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;IACvE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAwB,EAAE,OAAO,GAAmB,KAAK;IAClF,MAAM,GAAG,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,eAAe,CAAC;IACzE,MAAM,OAAO,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,6BAA6B,CAAC;IACxG,MAAM,QAAQ,GACZ,OAAO,KAAK,MAAM;QAChB,CAAC,CAAC,wEAAwE;QAC1E,CAAC,CAAC,qDAAqD,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CACjC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAClG,CAAC;IACF,OAAO;;;iGAGwF,KAAK;;;;;iCAKrE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO;IACtD,GAAG,uBAAuB,GAAG;;;;;;;EAO/B,GAAG;EACH,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BH,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EAwBjB,GAAG;EACH,GAAG;EACH,GAAG;;;;;IAKD,QAAQ;;;;;;;WAOD,iBAAiB,wBAAwB,OAAO;;;IAGvD,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8GL,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;;CAGpB,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AA4BA,OAAO,EAA2B,KAAK,EAAE,EAA4B,MAAM,cAAc,CAAC;AAC1F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAmB7C;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAQ1E;AAgBD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,OAAO,EAC1B,MAAM,EAAE,OAAO,EACf,EAAE,EAAE,EAAE,GACL,MAAM,CA0FR"}
|
package/dist/commands/context.js
CHANGED
|
@@ -15,10 +15,23 @@
|
|
|
15
15
|
* and not the ID of what it promises.
|
|
16
16
|
*/
|
|
17
17
|
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
18
|
-
import { compareStrings, contextFor, } from "@intentset/core";
|
|
18
|
+
import { compareStrings, contextFor, ID_PATTERN, } from "@intentset/core";
|
|
19
19
|
import { count, formatDiagnostic, json, snapshotLine, TOOL } from "../output.js";
|
|
20
20
|
import { claimingSlices } from "../slices.js";
|
|
21
21
|
import { unresolved, validationLine, validationSummary } from "./shared.js";
|
|
22
|
+
/** A file no slice claims has no context to load; VSA009 is the claims rule the architecture check reports it under. */
|
|
23
|
+
function unclaimed(path, session) {
|
|
24
|
+
const slices = [...session.result.graph.artifacts.values()].filter((a) => a.meta.type === "slice").length;
|
|
25
|
+
return {
|
|
26
|
+
code: "VSA009",
|
|
27
|
+
severity: "error",
|
|
28
|
+
origin: "architecture",
|
|
29
|
+
artifact: null,
|
|
30
|
+
path,
|
|
31
|
+
message: `No slice claims ${path}, so there is no context to load for it (${count(slices, "slice")} in this graph).`,
|
|
32
|
+
remediation: "Give the ID of the record whose context to load, or add the file to the claims of the slice that owns it (VSA §2).",
|
|
33
|
+
};
|
|
34
|
+
}
|
|
22
35
|
/**
|
|
23
36
|
* The artifact a `context` argument names: itself when it is an ID, else the
|
|
24
37
|
* one slice whose claims include it as a file path, relative to the working
|
|
@@ -59,9 +72,11 @@ export function contextCommand(session, argument, includeRestricted, asJson, io)
|
|
|
59
72
|
}
|
|
60
73
|
const via = "id" in target ? target.path : null;
|
|
61
74
|
const id = "id" in target ? target.id : argument;
|
|
62
|
-
const bundle = contextFor(graph, id, { includeRestricted });
|
|
75
|
+
const bundle = "slices" in target && !ID_PATTERN.test(argument) ? null : contextFor(graph, id, { includeRestricted });
|
|
63
76
|
if (bundle === null) {
|
|
64
|
-
|
|
77
|
+
// An argument that is not an ID was a file path, and no slice claims it: say that, rather than reading the
|
|
78
|
+
// path as a malformed ID, since the agent gave the file it is about to edit and wants to know what owns it.
|
|
79
|
+
const diagnostic = "slices" in target && !ID_PATTERN.test(argument) ? unclaimed(target.path, session) : unresolved(id, session);
|
|
65
80
|
if (asJson) {
|
|
66
81
|
io.stdout(json({
|
|
67
82
|
tool: TOOL,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAIL,cAAc,EACd,UAAU,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/graph.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `intentset graph --format json` (spec/export.md, Core §12): the
|
|
3
|
-
* `intentset/export/0.
|
|
3
|
+
* `intentset/export/0.5` envelope over the validated repository, with the
|
|
4
4
|
* report sections `--report` asks for. Printed to stdout, or written to the
|
|
5
5
|
* one file `--out` names, which may not be any file the repository reads.
|
|
6
6
|
* A failing validation still exports, with `validation.status: "fail"`, and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAGvC,eAAO,MAAM,eAAe,+BAA+B,CAAC;AAC5D,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AAGpD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAOD,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAarD;AAED,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAGvC,eAAO,MAAM,eAAe,+BAA+B,CAAC;AAC5D,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AAGpD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAOD,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAarD;AAED,eAAO,MAAM,qBAAqB,QAetB,CAAC;AAEb;;;;GAIG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASzD;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8C/E;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ7C"}
|
package/dist/commands/init.js
CHANGED
|
@@ -41,14 +41,16 @@ export const EMPTY_REGISTRIES_TEXT = [
|
|
|
41
41
|
"# Intentset registries (Core §4, §6, §7; VSA §3): the owners, audiences, release dimensions,",
|
|
42
42
|
"# evidence sources and shared resources records may name. An empty registry reads as not",
|
|
43
43
|
"# declared, and validate warns (CORE005) when a record names a value it could not check.",
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
44
|
+
"# Every record names an owner and audiences from these lists, and a behavior names at least",
|
|
45
|
+
"# one release, one role and one edition, so fill each of those before the first record.",
|
|
46
|
+
"owners: [] # who owns records, a team or a person, such as team-shop",
|
|
47
|
+
"audiences: [] # who records are written for, such as engineering and product",
|
|
48
|
+
"releases: [] # labels of the releases behaviors are available in, such as v1",
|
|
49
|
+
"roles: [] # roles of the product's users, such as shopper; a product with none still names one",
|
|
50
|
+
"editions: [] # editions the product ships in, such as standard; likewise",
|
|
51
|
+
"flags: [] # feature flags a behavior may require; usually none",
|
|
52
|
+
"evidenceSources: [] # where a measure's reading comes from, such as product-analytics",
|
|
53
|
+
"resources: [] # resources slices share, such as a data layer, each with its owner and consumers",
|
|
52
54
|
"",
|
|
53
55
|
].join("\n");
|
|
54
56
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAElG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AACpD,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAU5C,yEAAyE;AACzE,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,OAAO;QACL,0FAA0F;QAC1F,6FAA6F;QAC7F,oCAAoC;QACpC,eAAe,KAAK,CAAC,UAAU,CAAC,EAAE;QAClC,QAAQ;QACR,OAAO,KAAK,CAAC,kBAAkB,CAAC,EAAE;QAClC,eAAe,KAAK,CAAC,eAAe,CAAC,EAAE;QACvC,SAAS;QACT,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,8FAA8F;IAC9F,0FAA0F;IAC1F,0FAA0F;IAC1F,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAElG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AACpD,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAU5C,yEAAyE;AACzE,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,OAAO;QACL,0FAA0F;QAC1F,6FAA6F;QAC7F,oCAAoC;QACpC,eAAe,KAAK,CAAC,UAAU,CAAC,EAAE;QAClC,QAAQ;QACR,OAAO,KAAK,CAAC,kBAAkB,CAAC,EAAE;QAClC,eAAe,KAAK,CAAC,eAAe,CAAC,EAAE;QACvC,SAAS;QACT,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,8FAA8F;IAC9F,0FAA0F;IAC1F,0FAA0F;IAC1F,6FAA6F;IAC7F,yFAAyF;IACzF,+EAA+E;IAC/E,oFAAoF;IACpF,qFAAqF;IACrF,0GAA0G;IAC1G,iFAAiF;IACjF,0EAA0E;IAC1E,uFAAuF;IACvF,uGAAuG;IACvG,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,kCAAkC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjG,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAA8B,CAAC;QAC1F,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IACtG,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB,EAAE,EAAM;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,EAAE,CAAC,MAAM,CAAC,wFAAwF,CAAC,CAAC;QACpG,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEjE,2DAA2D;IAC3D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAiB,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,UAAU,GAAG,qBAAqB,CAAC;IACvC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;QAC/B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,EAAE,CAAC,MAAM,CACP,mGAAmG;gBACjG,mGAAmG;gBACnG,sFAAsF,CACzF,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAChC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,IAAI,IAAI,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACvC,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE/E,wFAAwF;IACxF,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAW,EAAE,WAAW,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,EAAE,CAAC,MAAM,CAAC,yFAAyF,CAAC,CAAC;QACrG,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAChG,EAAE,CAAC,MAAM,CAAC,eAAe,KAAK,CAAC,UAAU,CAAC,SAAS,KAAK,8BAA8B,CAAC,CAAC;IACxF,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,IAAI,KAAK,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC3C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;QAC1F,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAChF,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,wCAAwC;AACxC,SAAS,cAAc,CAAC,IAAY,EAAE,EAAM;IAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/E,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,OAAO,CAAC,CAAC;AACX,CAAC;AAED,oGAAoG;AACpG,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC/C,OAAO,oBAAoB,CAAC;QAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;KAChF,CAAC,CAAC;AACL,CAAC;AAED,8FAA8F;AAC9F,SAAS,MAAM,CAAC,IAAY,EAAE,KAA0B,EAAE,EAAM;IAC9D,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,MAAM,CACP,yCAAyC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;YACxF,wDAAwD,CAC3D,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,MAAM,CAAC,oCAAoC,IAAI,KAAM,KAAe,CAAC,OAAO,IAAI,CAAC,CAAC;YACrF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+HAA+H;AAC/H,SAAS,QAAQ,CAAC,EAAM;IACtB,EAAE,CAAC,MAAM,CAAC,iCAAiC,gBAAgB,yCAAyC,CAAC,CAAC;IACtG,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,cAAc;QAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type CountField, type Selector } from "@intentset/core";
|
|
2
|
+
import { type Io } from "../output.ts";
|
|
3
|
+
import type { Session } from "../session.ts";
|
|
4
|
+
export declare const LIST_FORMATS: readonly ["table", "json", "ids"];
|
|
5
|
+
export type ListFormat = (typeof LIST_FORMATS)[number];
|
|
6
|
+
/** Every option that adds to the selector, `--has` included. */
|
|
7
|
+
export declare const SELECTOR_OPTIONS: string[];
|
|
8
|
+
export interface ListOptions {
|
|
9
|
+
/** The selector options as given, in order, each repetition kept. */
|
|
10
|
+
given: Array<{
|
|
11
|
+
name: string;
|
|
12
|
+
value: string;
|
|
13
|
+
}>;
|
|
14
|
+
where?: string;
|
|
15
|
+
from?: string;
|
|
16
|
+
countBy?: string;
|
|
17
|
+
format?: string;
|
|
18
|
+
json: boolean;
|
|
19
|
+
check: boolean;
|
|
20
|
+
includeRestricted: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The checks that need no repository, so a typo costs nothing: the format, the count field, and the selector,
|
|
24
|
+
* compiled from the options or read from --where. Returns the selector and format, or a message.
|
|
25
|
+
*/
|
|
26
|
+
export declare function listUsageProblem(options: ListOptions, io: Io): {
|
|
27
|
+
problem: string;
|
|
28
|
+
} | {
|
|
29
|
+
selector: Selector;
|
|
30
|
+
format: ListFormat;
|
|
31
|
+
countBy: CountField | null;
|
|
32
|
+
};
|
|
33
|
+
/** The list from the repository's tree, over the session's validation. */
|
|
34
|
+
export declare function listCommand(session: Session, checked: {
|
|
35
|
+
selector: Selector;
|
|
36
|
+
format: ListFormat;
|
|
37
|
+
countBy: CountField | null;
|
|
38
|
+
}, options: ListOptions, io: Io): number;
|
|
39
|
+
/** The list from an export, read as a consumer reads one (spec/export.md §5), with no repository I/O. */
|
|
40
|
+
export declare function listFromExportCommand(checked: {
|
|
41
|
+
selector: Selector;
|
|
42
|
+
format: ListFormat;
|
|
43
|
+
countBy: CountField | null;
|
|
44
|
+
}, options: ListOptions & {
|
|
45
|
+
from: string;
|
|
46
|
+
}, io: Io): number;
|
|
47
|
+
/** The normalized selector in a line: fields joined with "and", values with "or". */
|
|
48
|
+
export declare function describeSelector(selector: Selector): string;
|
|
49
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,UAAU,EAMf,KAAK,QAAQ,EAGd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAS,KAAK,EAAE,EAAsB,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,eAAO,MAAM,YAAY,YAAI,OAAO,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AA2BvD,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,UAA+E,CAAC;AAE7G,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAKD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,EAAE,EAAE,EAAE,GACL;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,CA0C9F;AAuDD,0EAA0E;AAC1E,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,EAC/E,OAAO,EAAE,WAAW,EACpB,EAAE,EAAE,EAAE,GACL,MAAM,CAuBR;AAED,yGAAyG;AACzG,wBAAgB,qBAAqB,CACnC,OAAO,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,EAC/E,OAAO,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACvC,EAAE,EAAE,EAAE,GACL,MAAM,CAsBR;AAoFD,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA4B3D"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intentset list` (spec/list.md, ADR 0016): the records that match a selector, from the repository's tree or from
|
|
3
|
+
* an export, as a table, as the `intentset/list/0.1` result, or as IDs. The options compile to the selector `select`
|
|
4
|
+
* in core reads, or `--where` gives it whole. Never writes. Exit 0 whenever it answered, a failed validation included
|
|
5
|
+
* (the result says so); 1 with --check when a record matched or is undetermined; 2 for an invocation error.
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync } from "node:fs";
|
|
8
|
+
import { resolve } from "node:path";
|
|
9
|
+
import { COUNT_FIELDS, exportListMeta, listOutput, readExport, readSelector, select, } from "@intentset/core";
|
|
10
|
+
import { count, json, snapshotLine } from "../output.js";
|
|
11
|
+
import { validationSummary } from "./shared.js";
|
|
12
|
+
export const LIST_FORMATS = ["table", "json", "ids"];
|
|
13
|
+
/** Each field option and the selector field it fills. */
|
|
14
|
+
const FIELD_OPTIONS = {
|
|
15
|
+
id: "ids",
|
|
16
|
+
type: "types",
|
|
17
|
+
status: "statuses",
|
|
18
|
+
delivery: "deliveries",
|
|
19
|
+
owner: "owners",
|
|
20
|
+
audience: "audiences",
|
|
21
|
+
visibility: "visibilities",
|
|
22
|
+
under: "under",
|
|
23
|
+
"has-extension": "hasExtension",
|
|
24
|
+
describing: "describing",
|
|
25
|
+
claims: "claims",
|
|
26
|
+
};
|
|
27
|
+
/** Each availability option and the dimension it fills. */
|
|
28
|
+
const AVAILABILITY_OPTIONS = {
|
|
29
|
+
product: "products",
|
|
30
|
+
release: "releases",
|
|
31
|
+
"not-release": "notReleases",
|
|
32
|
+
role: "roles",
|
|
33
|
+
edition: "editions",
|
|
34
|
+
flag: "flags",
|
|
35
|
+
};
|
|
36
|
+
/** Every option that adds to the selector, `--has` included. */
|
|
37
|
+
export const SELECTOR_OPTIONS = [...Object.keys(FIELD_OPTIONS), ...Object.keys(AVAILABILITY_OPTIONS), "has"];
|
|
38
|
+
const HAS_SHAPE = "write it as [some:|none:|all:]<out|in>:<kind>[=<status>,...], such as out:governedBy=draft or none:in:verifies";
|
|
39
|
+
/**
|
|
40
|
+
* The checks that need no repository, so a typo costs nothing: the format, the count field, and the selector,
|
|
41
|
+
* compiled from the options or read from --where. Returns the selector and format, or a message.
|
|
42
|
+
*/
|
|
43
|
+
export function listUsageProblem(options, io) {
|
|
44
|
+
const format = options.format ?? (options.json ? "json" : "table");
|
|
45
|
+
if (!LIST_FORMATS.includes(format)) {
|
|
46
|
+
return { problem: `--format ${format}: the formats are ${LIST_FORMATS.join(", ")}` };
|
|
47
|
+
}
|
|
48
|
+
if (options.json && format !== "json") {
|
|
49
|
+
return { problem: `--json is --format json; it does not combine with --format ${format}` };
|
|
50
|
+
}
|
|
51
|
+
if (options.countBy !== undefined && !COUNT_FIELDS.includes(options.countBy)) {
|
|
52
|
+
return { problem: `--count-by ${options.countBy}: the fields are ${COUNT_FIELDS.join(", ")}` };
|
|
53
|
+
}
|
|
54
|
+
if (options.from !== undefined && options.includeRestricted) {
|
|
55
|
+
return { problem: "--include-restricted reads the tree; an export withheld what it withheld when it was written" };
|
|
56
|
+
}
|
|
57
|
+
let value;
|
|
58
|
+
let where;
|
|
59
|
+
if (options.where !== undefined) {
|
|
60
|
+
if (options.given.length > 0) {
|
|
61
|
+
const first = options.given[0].name;
|
|
62
|
+
return { problem: `--where gives the whole selector; it does not combine with --${first}` };
|
|
63
|
+
}
|
|
64
|
+
const file = options.where;
|
|
65
|
+
try {
|
|
66
|
+
value = JSON.parse(readFileSync(resolve(io.cwd, file), "utf8"));
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
return { problem: `--where ${file}: ${error.message}` };
|
|
70
|
+
}
|
|
71
|
+
where = (p) => `--where ${file}: ${p.pointer === "" ? "the selector" : p.pointer}: ${p.message}`;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
const compiled = compile(options.given);
|
|
75
|
+
if ("problem" in compiled)
|
|
76
|
+
return compiled;
|
|
77
|
+
value = compiled.selector;
|
|
78
|
+
where = (p) => `${optionFor(p.pointer)}: ${p.message}`;
|
|
79
|
+
}
|
|
80
|
+
const read = readSelector(value);
|
|
81
|
+
if (!read.ok)
|
|
82
|
+
return { problem: read.problems.map(where).join("\n ") };
|
|
83
|
+
return {
|
|
84
|
+
selector: read.selector,
|
|
85
|
+
format: format,
|
|
86
|
+
countBy: (options.countBy ?? null),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** The options as a selector: a value may be a comma-separated list (one path for --claims), and repeats add values. */
|
|
90
|
+
function compile(given) {
|
|
91
|
+
const selector = {};
|
|
92
|
+
const availability = {};
|
|
93
|
+
const links = [];
|
|
94
|
+
const add = (target, key, values) => {
|
|
95
|
+
target[key] = [...(target[key] ?? []), ...values];
|
|
96
|
+
};
|
|
97
|
+
for (const { name, value } of given) {
|
|
98
|
+
const values = name === "claims" ? [value] : value.split(",").map((part) => part.trim());
|
|
99
|
+
if (name === "has") {
|
|
100
|
+
const link = parseHas(value);
|
|
101
|
+
if (link === null)
|
|
102
|
+
return { problem: `--has ${value}: ${HAS_SHAPE}` };
|
|
103
|
+
links.push(link);
|
|
104
|
+
}
|
|
105
|
+
else if (Object.hasOwn(AVAILABILITY_OPTIONS, name)) {
|
|
106
|
+
add(availability, AVAILABILITY_OPTIONS[name], values);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
add(selector, FIELD_OPTIONS[name], values);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (Object.keys(availability).length > 0)
|
|
113
|
+
selector.availability = availability;
|
|
114
|
+
if (links.length > 0)
|
|
115
|
+
selector.links = links;
|
|
116
|
+
return { selector };
|
|
117
|
+
}
|
|
118
|
+
/** `[quantifier:]direction:kind[=status,...]`; the parts are checked by readSelector, the shape here. */
|
|
119
|
+
function parseHas(value) {
|
|
120
|
+
const equals = value.indexOf("=");
|
|
121
|
+
const head = equals === -1 ? value : value.slice(0, equals);
|
|
122
|
+
const parts = head.split(":");
|
|
123
|
+
if (parts.length < 2 || parts.length > 3 || parts.some((part) => part === ""))
|
|
124
|
+
return null;
|
|
125
|
+
const [quantifier, direction, kind] = parts.length === 3 ? parts : ["some", ...parts];
|
|
126
|
+
const link = { direction, kind, quantifier };
|
|
127
|
+
if (equals !== -1)
|
|
128
|
+
link.match = {
|
|
129
|
+
statuses: value
|
|
130
|
+
.slice(equals + 1)
|
|
131
|
+
.split(",")
|
|
132
|
+
.map((part) => part.trim()),
|
|
133
|
+
};
|
|
134
|
+
return link;
|
|
135
|
+
}
|
|
136
|
+
/** The option a compiled selector's pointer came from, for a message in the command line's words. */
|
|
137
|
+
function optionFor(pointer) {
|
|
138
|
+
const [, field, second] = pointer.split("/");
|
|
139
|
+
if (field === "links")
|
|
140
|
+
return "--has";
|
|
141
|
+
if (field === "availability") {
|
|
142
|
+
return `--${Object.keys(AVAILABILITY_OPTIONS).find((name) => AVAILABILITY_OPTIONS[name] === second) ?? "availability"}`;
|
|
143
|
+
}
|
|
144
|
+
return `--${Object.keys(FIELD_OPTIONS).find((name) => FIELD_OPTIONS[name] === field) ?? field}`;
|
|
145
|
+
}
|
|
146
|
+
/** The list from the repository's tree, over the session's validation. */
|
|
147
|
+
export function listCommand(session, checked, options, io) {
|
|
148
|
+
const { repo, result, snapshot } = session;
|
|
149
|
+
const selection = select(result.graph, checked.selector, {
|
|
150
|
+
includeRestricted: options.includeRestricted,
|
|
151
|
+
registries: repo.registries,
|
|
152
|
+
});
|
|
153
|
+
const v = validationSummary(session, session.level);
|
|
154
|
+
const output = listOutput(selection, {
|
|
155
|
+
source: "tree",
|
|
156
|
+
snapshot: {
|
|
157
|
+
repository: repo.config.repository,
|
|
158
|
+
commit: snapshot.commit,
|
|
159
|
+
...(snapshot.commitUnavailable === undefined ? {} : { commitUnavailable: snapshot.commitUnavailable }),
|
|
160
|
+
uncommitted: snapshot.uncommitted === true,
|
|
161
|
+
graphHash: snapshot.graphHash,
|
|
162
|
+
},
|
|
163
|
+
validation: { level: session.level, status: v.status, errors: v.errors, warnings: v.warnings },
|
|
164
|
+
}, checked.countBy);
|
|
165
|
+
return print(output, checked.format, options, io, "the repository's tree");
|
|
166
|
+
}
|
|
167
|
+
/** The list from an export, read as a consumer reads one (spec/export.md §5), with no repository I/O. */
|
|
168
|
+
export function listFromExportCommand(checked, options, io) {
|
|
169
|
+
let bytes;
|
|
170
|
+
try {
|
|
171
|
+
bytes = readFileSync(resolve(io.cwd, options.from));
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
io.stderr(`intentset list: --from ${options.from}: ${error.message}\n`);
|
|
175
|
+
return 2;
|
|
176
|
+
}
|
|
177
|
+
// The file is one the caller named, so its size is not a reason to refuse it.
|
|
178
|
+
const read = readExport(bytes, { maxBytes: Math.max(bytes.length, 1) });
|
|
179
|
+
if (!read.ok) {
|
|
180
|
+
const problems = read.problems.slice(0, 5).map((p) => ` ${p.pointer || "/"} ${p.message}`);
|
|
181
|
+
io.stderr(`intentset list: --from ${options.from} is not an export this reader accepts (${read.category}):\n`);
|
|
182
|
+
io.stderr(`${problems.join("\n")}\n`);
|
|
183
|
+
return 2;
|
|
184
|
+
}
|
|
185
|
+
const output = listOutput(select(read.envelope, checked.selector), { source: "export", ...exportListMeta(read.envelope) }, checked.countBy);
|
|
186
|
+
return print(output, checked.format, options, io, `the export ${options.from}`);
|
|
187
|
+
}
|
|
188
|
+
function print(output, format, options, io, source) {
|
|
189
|
+
if (format === "json")
|
|
190
|
+
io.stdout(json(output));
|
|
191
|
+
else if (format === "ids") {
|
|
192
|
+
io.stdout(output.rows.map((row) => `${row.id}\n`).join(""));
|
|
193
|
+
for (const line of cautions(output))
|
|
194
|
+
io.stderr(`intentset list: ${line}\n`);
|
|
195
|
+
}
|
|
196
|
+
else
|
|
197
|
+
io.stdout(renderTable(output, source));
|
|
198
|
+
const flagged = output.counts.matched + output.counts.undetermined;
|
|
199
|
+
return options.check && flagged > 0 ? 1 : 0;
|
|
200
|
+
}
|
|
201
|
+
/** What a reader of bare IDs should know, said on stderr so it never lands in a captured list. */
|
|
202
|
+
function cautions(output) {
|
|
203
|
+
const lines = [];
|
|
204
|
+
const { counts, validation } = output;
|
|
205
|
+
if (counts.undetermined > 0) {
|
|
206
|
+
lines.push(`${count(counts.undetermined, "record")} undetermined, because the answer depends on a link to a withheld artifact: ${output.undetermined.join(", ")}`);
|
|
207
|
+
}
|
|
208
|
+
if (validation.status === "fail") {
|
|
209
|
+
lines.push(`validation failed at ${validation.level} with ${count(validation.errors, "error")}, so the graph may be incomplete; run \`intentset validate\`.`);
|
|
210
|
+
}
|
|
211
|
+
return [...lines, ...output.notes];
|
|
212
|
+
}
|
|
213
|
+
function renderTable(output, source) {
|
|
214
|
+
const { counts, validation, snapshot } = output;
|
|
215
|
+
const lines = [
|
|
216
|
+
snapshotLine({
|
|
217
|
+
commit: snapshot.commit,
|
|
218
|
+
...(snapshot.commitUnavailable === undefined ? {} : { commitUnavailable: snapshot.commitUnavailable }),
|
|
219
|
+
uncommitted: snapshot.uncommitted,
|
|
220
|
+
graphHash: snapshot.graphHash,
|
|
221
|
+
}),
|
|
222
|
+
`Source: ${source}${snapshot.generatedAt === undefined ? "" : `, generated ${snapshot.generatedAt}`}`,
|
|
223
|
+
`Validation: ${validation.status} at ${validation.level}, ${count(validation.errors, "error")}, ${count(validation.warnings, "warning")}` +
|
|
224
|
+
(validation.status === "fail" ? ". The graph may be incomplete; run `intentset validate`." : ""),
|
|
225
|
+
`Selector: ${describeSelector(output.selector)}`,
|
|
226
|
+
`Considered ${counts.considered} (${counts.withheld} withheld), matched ${counts.matched}, undetermined ${counts.undetermined}`,
|
|
227
|
+
"",
|
|
228
|
+
];
|
|
229
|
+
if (output.countBy !== null) {
|
|
230
|
+
const groups = output.countBy.groups.map((group) => [group.value ?? "(none)", String(group.count)]);
|
|
231
|
+
lines.push(...columns([[output.countBy.field, "count"], ...groups], [false, true]));
|
|
232
|
+
if (output.countBy.multiValued) {
|
|
233
|
+
lines.push("", `A record counts once under each ${output.countBy.field} it names, so the counts can sum to more than ${counts.matched}.`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
else if (output.rows.length === 0) {
|
|
237
|
+
lines.push("No record matches.");
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
const rows = output.rows.map((row) => [row.id, row.type, row.status, row.owner, row.title]);
|
|
241
|
+
lines.push(...columns([["ID", "type", "status", "owner", "title"], ...rows], []));
|
|
242
|
+
}
|
|
243
|
+
if (output.undetermined.length > 0) {
|
|
244
|
+
lines.push("", `Undetermined, because the answer depends on a link to a withheld artifact (${output.undetermined.length}):`, ...output.undetermined.map((id) => ` ${id}`));
|
|
245
|
+
}
|
|
246
|
+
if (output.notes.length > 0)
|
|
247
|
+
lines.push("", ...output.notes.map((note) => `Note: ${note}`));
|
|
248
|
+
return `${lines.join("\n")}\n`;
|
|
249
|
+
}
|
|
250
|
+
/** Columns padded to their widest cell, the last left ragged; `right` aligns a column to the right. */
|
|
251
|
+
function columns(table, right) {
|
|
252
|
+
const widths = table[0].map((_, i) => Math.max(...table.map((row) => row[i].length)));
|
|
253
|
+
return table.map((row) => row
|
|
254
|
+
.map((cell, i) => {
|
|
255
|
+
if (i === row.length - 1 && !right[i])
|
|
256
|
+
return cell;
|
|
257
|
+
return right[i] ? cell.padStart(widths[i]) : cell.padEnd(widths[i]);
|
|
258
|
+
})
|
|
259
|
+
.join(" "));
|
|
260
|
+
}
|
|
261
|
+
/** The normalized selector in a line: fields joined with "and", values with "or". */
|
|
262
|
+
export function describeSelector(selector) {
|
|
263
|
+
const parts = [];
|
|
264
|
+
const values = (list) => list.join(" or ");
|
|
265
|
+
for (const [field, label] of [
|
|
266
|
+
["ids", "id"],
|
|
267
|
+
["types", "type"],
|
|
268
|
+
["statuses", "status"],
|
|
269
|
+
["deliveries", "delivery"],
|
|
270
|
+
["owners", "owner"],
|
|
271
|
+
["audiences", "audience"],
|
|
272
|
+
["visibilities", "visibility"],
|
|
273
|
+
["under", "under"],
|
|
274
|
+
["hasExtension", "extension"],
|
|
275
|
+
]) {
|
|
276
|
+
const list = selector[field];
|
|
277
|
+
if (list !== undefined)
|
|
278
|
+
parts.push(`${label} ${values(list)}`);
|
|
279
|
+
}
|
|
280
|
+
for (const [name, dimension] of Object.entries(AVAILABILITY_OPTIONS)) {
|
|
281
|
+
const list = selector.availability?.[dimension];
|
|
282
|
+
if (list !== undefined)
|
|
283
|
+
parts.push(`${name.replace("-", " ")} ${values(list)}`);
|
|
284
|
+
}
|
|
285
|
+
for (const link of selector.links ?? []) {
|
|
286
|
+
const match = link.match === undefined ? "" : ` matching ${describeSelector(link.match)}`;
|
|
287
|
+
parts.push(`${link.quantifier} ${link.direction} ${link.kind}${match}`);
|
|
288
|
+
}
|
|
289
|
+
if (selector.describing !== undefined)
|
|
290
|
+
parts.push(`describing ${values(selector.describing)}`);
|
|
291
|
+
if (selector.claims !== undefined)
|
|
292
|
+
parts.push(`claiming ${values(selector.claims)}`);
|
|
293
|
+
return parts.length === 0 ? "every record" : parts.join(", and ");
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|