@codyswann/lisa 4.24.2 → 4.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh +218 -82
- package/all/copy-overwrite/scripts/lisa-reconcile-policy.mjs +85 -12
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +74 -15
- package/dist/cli/ui-config-write-persistence.d.ts +12 -2
- package/dist/cli/ui-config-write-persistence.d.ts.map +1 -1
- package/dist/cli/ui-config-write-persistence.js +7 -3
- package/dist/cli/ui-config-write-persistence.js.map +1 -1
- package/dist/cli/ui-config-write.d.ts +1 -1
- package/dist/cli/ui-config-write.d.ts.map +1 -1
- package/dist/cli/ui-config-write.js +62 -6
- package/dist/cli/ui-config-write.js.map +1 -1
- package/dist/codex/scripts/block-no-verify.sh +134 -37
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +8 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +7 -6
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/opencode/plugin-templates/block-no-verify.sh +218 -82
- package/package.json +3 -3
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/hooks/block-no-verify.agy.sh +134 -37
- package/plugins/lisa/hooks/block-no-verify.sh +218 -82
- package/plugins/lisa-agy/hooks/block-no-verify.agy.sh +134 -37
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/hooks/block-no-verify.sh +218 -82
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/block-no-verify.sh +218 -82
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/hooks/block-no-verify.agy.sh +134 -37
- package/plugins/src/base/hooks/block-no-verify.sh +218 -82
- package/ui/README.md +30 -2
|
@@ -8,12 +8,22 @@ export interface RoutedConfigChanges {
|
|
|
8
8
|
}
|
|
9
9
|
/** Callback that enforces registry validators against the prospective config. */
|
|
10
10
|
export type ValidateCommittedConfig = (config: JsonObject) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Follow-up work run under the same serialization as the write it follows.
|
|
13
|
+
*
|
|
14
|
+
* Config propagation reads and rewrites both config files, so running it after
|
|
15
|
+
* the lock is released would let a second request's snapshot interleave with
|
|
16
|
+
* this request's propagation. It runs inside the transaction instead, and its
|
|
17
|
+
* result becomes the caller's config view.
|
|
18
|
+
*/
|
|
19
|
+
export type AfterPersist = (projectRoot: string) => Promise<JsonObject>;
|
|
11
20
|
/**
|
|
12
21
|
* Persist one pre-classified request under the project write queue.
|
|
13
22
|
* @param destDir - Project root containing the two fixed config filenames
|
|
14
23
|
* @param changes - Changes split by committed versus local ownership
|
|
15
24
|
* @param validateCommitted - Registry validation applied before either write
|
|
16
|
-
* @
|
|
25
|
+
* @param afterPersist - Optional in-transaction follow-up supplying the result
|
|
26
|
+
* @returns The follow-up's config view, or the prospective committed config
|
|
17
27
|
*/
|
|
18
|
-
export declare function persistRoutedConfigChanges(destDir: string, changes: RoutedConfigChanges, validateCommitted: ValidateCommittedConfig): Promise<JsonObject>;
|
|
28
|
+
export declare function persistRoutedConfigChanges(destDir: string, changes: RoutedConfigChanges, validateCommitted: ValidateCommittedConfig, afterPersist?: AfterPersist): Promise<JsonObject>;
|
|
19
29
|
//# sourceMappingURL=ui-config-write-persistence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-config-write-persistence.d.ts","sourceRoot":"","sources":["../../src/cli/ui-config-write-persistence.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AA0BlE,+EAA+E;AAC/E,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACxD,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CACrD;AAoBD,iFAAiF;AACjF,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;AAEnE
|
|
1
|
+
{"version":3,"file":"ui-config-write-persistence.d.ts","sourceRoot":"","sources":["../../src/cli/ui-config-write-persistence.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AA0BlE,+EAA+E;AAC/E,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACxD,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CACrD;AAoBD,iFAAiF;AACjF,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAExE;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,EAC5B,iBAAiB,EAAE,uBAAuB,EAC1C,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,UAAU,CAAC,CA2CrB"}
|
|
@@ -35,9 +35,10 @@ const configWriteQueues = new Map();
|
|
|
35
35
|
* @param destDir - Project root containing the two fixed config filenames
|
|
36
36
|
* @param changes - Changes split by committed versus local ownership
|
|
37
37
|
* @param validateCommitted - Registry validation applied before either write
|
|
38
|
-
* @
|
|
38
|
+
* @param afterPersist - Optional in-transaction follow-up supplying the result
|
|
39
|
+
* @returns The follow-up's config view, or the prospective committed config
|
|
39
40
|
*/
|
|
40
|
-
export async function persistRoutedConfigChanges(destDir, changes, validateCommitted) {
|
|
41
|
+
export async function persistRoutedConfigChanges(destDir, changes, validateCommitted, afterPersist) {
|
|
41
42
|
const projectRoot = await requireCanonicalProjectRoot(destDir);
|
|
42
43
|
const lockTarget = await resolveConfigLockTarget(projectRoot.path);
|
|
43
44
|
return await withConfigWriteLock(projectRoot.path, async () => await withFileTargetLock(lockTarget, async () => {
|
|
@@ -61,7 +62,10 @@ export async function persistRoutedConfigChanges(destDir, changes, validateCommi
|
|
|
61
62
|
await assertProjectRootIdentity(projectRoot);
|
|
62
63
|
await publishPrepared(local, true, projectRoot);
|
|
63
64
|
await assertProjectRootIdentity(projectRoot);
|
|
64
|
-
|
|
65
|
+
if (afterPersist === undefined) {
|
|
66
|
+
return committed.document;
|
|
67
|
+
}
|
|
68
|
+
return await afterPersist(projectRoot.path);
|
|
65
69
|
}));
|
|
66
70
|
}
|
|
67
71
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-config-write-persistence.js","sourceRoot":"","sources":["../../src/cli/ui-config-write-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,GAET,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,yBAAyB,EACzB,2BAA2B,GAE5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,MAAM,WAAW,GAAG,mBAAmB,CAAC;AACxC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AACpD,MAAM,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC;AACpC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AACnC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAC1C,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CACrC,MAAM,EAAE,EACR,wBAAwB,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,CACvD,CAAC;AACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-config-write-persistence.js","sourceRoot":"","sources":["../../src/cli/ui-config-write-persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import * as http from "node:http";
|
|
6
6
|
/**
|
|
7
|
-
* Serve the same-origin
|
|
7
|
+
* Serve the same-origin config write endpoint.
|
|
8
8
|
* @param request - Incoming loopback request
|
|
9
9
|
* @param response - Response associated with the request
|
|
10
10
|
* @param destDir - Project root whose committed config is written
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-config-write.d.ts","sourceRoot":"","sources":["../../src/cli/ui-config-write.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-config-write.d.ts","sourceRoot":"","sources":["../../src/cli/ui-config-write.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAuUlC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,QAAQ,EAAE,IAAI,CAAC,cAAc,EAC7B,OAAO,EAAE,MAAM,GACd,IAAI,CA8DN"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { getAtPath, isJsonObject, } from "../sync/json-path.js";
|
|
2
|
+
import { runConfigSync } from "../sync/config-sync.js";
|
|
2
3
|
import { SYNC_REGISTRY } from "../sync/registry.js";
|
|
4
|
+
import { readConfinedMergedConfig } from "./ui-confined-project-read.js";
|
|
3
5
|
import { persistRoutedConfigChanges, } from "./ui-config-write-persistence.js";
|
|
4
6
|
import { parseUnambiguousJson } from "./ui-config-write-document.js";
|
|
5
7
|
const JSON_CONTENT_TYPE = "application/json; charset=utf-8";
|
|
@@ -14,6 +16,16 @@ const LOCAL_CONFIG_KEYS = new Set([
|
|
|
14
16
|
/** Error raised for malformed request bodies that should return 400. */
|
|
15
17
|
class RequestBodyError extends Error {
|
|
16
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Error raised when the config landed but propagation or re-read did not.
|
|
21
|
+
*
|
|
22
|
+
* The write is already durable at this point, so the endpoint must not claim
|
|
23
|
+
* the write failed. It reports the propagation failure instead, because a
|
|
24
|
+
* silent success here would leave exactly the config-versus-artifact drift the
|
|
25
|
+
* in-band sync exists to remove.
|
|
26
|
+
*/
|
|
27
|
+
class ConfigPropagationError extends Error {
|
|
28
|
+
}
|
|
17
29
|
/**
|
|
18
30
|
* Restrict loopback origins to the authority advertised by `lisa ui`.
|
|
19
31
|
* @param host - Origin URL host
|
|
@@ -226,7 +238,52 @@ function decodeRequestBody(bytes) {
|
|
|
226
238
|
}
|
|
227
239
|
}
|
|
228
240
|
/**
|
|
229
|
-
*
|
|
241
|
+
* Propagate a landed write to the mirrored artifacts and re-read the result.
|
|
242
|
+
*
|
|
243
|
+
* The write and its propagation are one user action: a Save that updated
|
|
244
|
+
* `.lisa.config.json` while leaving `vitest.thresholds.json` behind would leave
|
|
245
|
+
* the console claiming one floor while CI enforced another. `runConfigSync`
|
|
246
|
+
* only rewrites artifact files that already exist, so this never scaffolds an
|
|
247
|
+
* artifact a project did not ask for.
|
|
248
|
+
*
|
|
249
|
+
* The merged config is read back from disk afterwards rather than derived from
|
|
250
|
+
* the prospective document, so the response describes what actually landed —
|
|
251
|
+
* including any value sync itself populated — instead of what the request
|
|
252
|
+
* assumed.
|
|
253
|
+
* @param destDir - Project root whose config was just written
|
|
254
|
+
* @returns Committed-plus-local merged config, with local winning per key
|
|
255
|
+
*/
|
|
256
|
+
async function propagateAndReadMergedConfig(destDir) {
|
|
257
|
+
try {
|
|
258
|
+
await runConfigSync(destDir);
|
|
259
|
+
return await readConfinedMergedConfig(destDir);
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
throw new ConfigPropagationError(error instanceof Error ? error.message : "Config propagation failed");
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Choose an error message that never misreports which stage actually failed.
|
|
267
|
+
*
|
|
268
|
+
* A propagation failure happens after the config is already durable, so
|
|
269
|
+
* reporting it as a failed write would tell the operator to retry a write that
|
|
270
|
+
* already succeeded.
|
|
271
|
+
* @param error - Rejected value from the request pipeline
|
|
272
|
+
* @param isRequestBodyError - Whether the request itself was malformed
|
|
273
|
+
* @param isPropagationError - Whether the landed write failed to propagate
|
|
274
|
+
* @returns Operator-readable message for the response body
|
|
275
|
+
*/
|
|
276
|
+
function propagationSafeMessage(error, isRequestBodyError, isPropagationError) {
|
|
277
|
+
if (isRequestBodyError && error instanceof Error) {
|
|
278
|
+
return error.message;
|
|
279
|
+
}
|
|
280
|
+
if (isPropagationError && error instanceof Error) {
|
|
281
|
+
return `Lisa config was saved, but updating the files it feeds failed: ${error.message}`;
|
|
282
|
+
}
|
|
283
|
+
return "Unable to write Lisa config";
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Serve the same-origin config write endpoint.
|
|
230
287
|
* @param request - Incoming loopback request
|
|
231
288
|
* @param response - Response associated with the request
|
|
232
289
|
* @param destDir - Project root whose committed config is written
|
|
@@ -262,23 +319,22 @@ export function serveConfigWrite(request, response, destDir) {
|
|
|
262
319
|
response.end(JSON.stringify({ error: parsed.error }));
|
|
263
320
|
return;
|
|
264
321
|
}
|
|
265
|
-
const
|
|
322
|
+
const config = await persistRoutedConfigChanges(destDir, parsed.changes, validateProspectiveConfig, propagateAndReadMergedConfig);
|
|
266
323
|
response.writeHead(200, {
|
|
267
324
|
"cache-control": NO_STORE,
|
|
268
325
|
"content-type": JSON_CONTENT_TYPE,
|
|
269
326
|
});
|
|
270
|
-
response.end(JSON.stringify({ ok: true, config
|
|
327
|
+
response.end(JSON.stringify({ ok: true, config }));
|
|
271
328
|
})
|
|
272
329
|
.catch(error => {
|
|
273
330
|
const isRequestBodyError = error instanceof RequestBodyError;
|
|
331
|
+
const isPropagationError = error instanceof ConfigPropagationError;
|
|
274
332
|
response.writeHead(isRequestBodyError ? 400 : 500, {
|
|
275
333
|
"cache-control": NO_STORE,
|
|
276
334
|
"content-type": JSON_CONTENT_TYPE,
|
|
277
335
|
});
|
|
278
336
|
response.end(JSON.stringify({
|
|
279
|
-
error: isRequestBodyError
|
|
280
|
-
? error.message
|
|
281
|
-
: "Unable to write Lisa config",
|
|
337
|
+
error: propagationSafeMessage(error, isRequestBodyError, isPropagationError),
|
|
282
338
|
}));
|
|
283
339
|
});
|
|
284
340
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-config-write.js","sourceRoot":"","sources":["../../src/cli/ui-config-write.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ui-config-write.js","sourceRoot":"","sources":["../../src/cli/ui-config-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -137,13 +137,26 @@ COMMAND_SEPARATORS = {
|
|
|
137
137
|
";", "|", "||", "&", "&&", "(", ")", "<", ">", ">>", "<<", "&|",
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
# GNU env's long options in FULL, so an ABBREVIATION can be resolved against
|
|
141
|
+
# them: getopt_long accepts any prefix naming exactly one option, and nothing
|
|
142
|
+
# but --split-string starts with `s`, so `env --s` splits a string just as
|
|
143
|
+
# completely as `env --split-string` does.
|
|
144
|
+
ENV_LONG_OPTIONS = {
|
|
145
|
+
"--argv0", "--block-signals", "--chdir", "--debug", "--default-signal",
|
|
146
|
+
"--help", "--ignore-environment", "--ignore-signal",
|
|
147
|
+
"--list-signal-handling", "--null", "--split-string", "--unset",
|
|
148
|
+
"--version",
|
|
142
149
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
|
|
150
|
+
# Of those, the ones whose value is a SEPARATE token. The signal options take
|
|
151
|
+
# an OPTIONAL value, which GNU reads only when attached with `=`.
|
|
152
|
+
ENV_LONG_SEPARATE_VALUE = {"--argv0", "--chdir", "--split-string", "--unset"}
|
|
153
|
+
ENV_SHORT_NO_VALUE = frozenset("i0v")
|
|
154
|
+
ENV_SHORT_TAKES_VALUE = frozenset("uCaS")
|
|
155
|
+
|
|
156
|
+
# Builtins and wrappers that run whatever FOLLOWS them without changing what it
|
|
157
|
+
# is, so `command env -S ...` runs exactly the `env` that `env -S ...` runs.
|
|
158
|
+
COMMAND_PREFIX_WRAPPERS = {"command", "exec", "builtin", "nohup", "setsid"}
|
|
159
|
+
COMMAND_PREFIX_SEPARATE_VALUE = {"-a"}
|
|
147
160
|
|
|
148
161
|
# git's own options taking a SEPARATE value token, skipped when looking for the
|
|
149
162
|
# subcommand so `git -c core.hooksPath=x commit` still reaches `commit`.
|
|
@@ -286,19 +299,110 @@ def subcommand_after_git(tokens, start):
|
|
|
286
299
|
return None
|
|
287
300
|
|
|
288
301
|
|
|
289
|
-
def
|
|
290
|
-
"""
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
302
|
+
def resolve_env_long_option(name):
|
|
303
|
+
"""Resolve one env long option, abbreviations included.
|
|
304
|
+
|
|
305
|
+
Returns the full spelling, "" when the abbreviation names several options
|
|
306
|
+
(real env refuses those), or None when nothing matches.
|
|
307
|
+
"""
|
|
308
|
+
if not name.startswith("--") or name == "--":
|
|
309
|
+
return None
|
|
310
|
+
if name in ENV_LONG_OPTIONS:
|
|
311
|
+
return name
|
|
312
|
+
matches = [option for option in ENV_LONG_OPTIONS if option.startswith(name)]
|
|
313
|
+
if len(matches) == 1:
|
|
314
|
+
return matches[0]
|
|
315
|
+
return "" if matches else None
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
def env_option_kind(token):
|
|
319
|
+
"""Classify one token in an `env` option position.
|
|
320
|
+
|
|
321
|
+
Returns "split-string", "separate-value", "no-value", "ambiguous" when env
|
|
322
|
+
accepts the token but this parser cannot name it, or None when the token is
|
|
323
|
+
not an option at all.
|
|
324
|
+
"""
|
|
325
|
+
if not token.startswith("-") or token in {"-", "--"}:
|
|
326
|
+
return None
|
|
327
|
+
if token.startswith("--"):
|
|
328
|
+
resolved = resolve_env_long_option(token.split("=", 1)[0])
|
|
329
|
+
if not resolved:
|
|
330
|
+
return "ambiguous"
|
|
331
|
+
if resolved == "--split-string":
|
|
332
|
+
return "split-string"
|
|
333
|
+
if "=" in token:
|
|
334
|
+
return "no-value"
|
|
335
|
+
return (
|
|
336
|
+
"separate-value" if resolved in ENV_LONG_SEPARATE_VALUE else "no-value"
|
|
337
|
+
)
|
|
338
|
+
for position, letter in enumerate(token[1:], start=2):
|
|
294
339
|
if letter == "S":
|
|
295
|
-
return
|
|
296
|
-
if letter in
|
|
297
|
-
# The rest of
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
340
|
+
return "split-string"
|
|
341
|
+
if letter in ENV_SHORT_TAKES_VALUE:
|
|
342
|
+
# The rest of the cluster is the option's value when there is one;
|
|
343
|
+
# otherwise the value is the following token.
|
|
344
|
+
return "no-value" if position <= len(token) - 1 else "separate-value"
|
|
345
|
+
if letter not in ENV_SHORT_NO_VALUE:
|
|
346
|
+
return "ambiguous"
|
|
347
|
+
return "no-value"
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
def strip_command_prefix(prefix):
|
|
351
|
+
"""Drop tokens that precede a command without changing what it is.
|
|
352
|
+
|
|
353
|
+
Assignments, the `command`/`exec`/`builtin` builtins, and nested `env`
|
|
354
|
+
wrappers all leave the following word in command position. Reading any of
|
|
355
|
+
them as the command is what let `command env -S ...` and `env -- env -S
|
|
356
|
+
...` past the split-string check: the prefix failed the assignments-only
|
|
357
|
+
test, so the wrapped `env` was never classified.
|
|
358
|
+
|
|
359
|
+
Returns a pair (status, remainder): "ok" with whatever still stands before
|
|
360
|
+
the candidate, "operand" when the candidate is a wrapper option's value,
|
|
361
|
+
or "ambiguous" when an option could not be classified.
|
|
362
|
+
"""
|
|
363
|
+
cursor = 0
|
|
364
|
+
while cursor < len(prefix):
|
|
365
|
+
token = prefix[cursor]
|
|
366
|
+
if "=" in token and not token.startswith(("=", "-")):
|
|
367
|
+
cursor += 1
|
|
368
|
+
continue
|
|
369
|
+
program = token.rsplit("/", 1)[-1]
|
|
370
|
+
if program in COMMAND_PREFIX_WRAPPERS:
|
|
371
|
+
cursor += 1
|
|
372
|
+
while cursor < len(prefix) and prefix[cursor].startswith("-"):
|
|
373
|
+
if prefix[cursor] == "--":
|
|
374
|
+
cursor += 1
|
|
375
|
+
break
|
|
376
|
+
if prefix[cursor] in COMMAND_PREFIX_SEPARATE_VALUE:
|
|
377
|
+
if cursor + 1 >= len(prefix):
|
|
378
|
+
return ("operand", [])
|
|
379
|
+
cursor += 2
|
|
380
|
+
continue
|
|
381
|
+
cursor += 1
|
|
382
|
+
continue
|
|
383
|
+
if program == "env":
|
|
384
|
+
cursor += 1
|
|
385
|
+
while cursor < len(prefix):
|
|
386
|
+
option = prefix[cursor]
|
|
387
|
+
if option == "--":
|
|
388
|
+
cursor += 1
|
|
389
|
+
break
|
|
390
|
+
kind = env_option_kind(option)
|
|
391
|
+
if kind is None:
|
|
392
|
+
break
|
|
393
|
+
if kind == "ambiguous":
|
|
394
|
+
return ("ambiguous", [])
|
|
395
|
+
if kind == "split-string":
|
|
396
|
+
return ("operand", [])
|
|
397
|
+
if kind == "separate-value":
|
|
398
|
+
if cursor + 1 >= len(prefix):
|
|
399
|
+
return ("operand", [])
|
|
400
|
+
cursor += 2
|
|
401
|
+
continue
|
|
402
|
+
cursor += 1
|
|
403
|
+
continue
|
|
404
|
+
break
|
|
405
|
+
return ("ok", prefix[cursor:])
|
|
302
406
|
|
|
303
407
|
|
|
304
408
|
def env_uses_split_string(tokens, index):
|
|
@@ -306,8 +410,8 @@ def env_uses_split_string(tokens, index):
|
|
|
306
410
|
start = index - 1
|
|
307
411
|
while start >= 0 and tokens[start] not in COMMAND_SEPARATORS:
|
|
308
412
|
start -= 1
|
|
309
|
-
|
|
310
|
-
if
|
|
413
|
+
status, remainder = strip_command_prefix(tokens[start + 1:index])
|
|
414
|
+
if status != "ok" or remainder:
|
|
311
415
|
return False
|
|
312
416
|
|
|
313
417
|
cursor = index + 1
|
|
@@ -315,24 +419,17 @@ def env_uses_split_string(tokens, index):
|
|
|
315
419
|
token = tokens[cursor]
|
|
316
420
|
if token in COMMAND_SEPARATORS or token == "--":
|
|
317
421
|
return False
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
):
|
|
422
|
+
kind = env_option_kind(token)
|
|
423
|
+
if kind in {"split-string", "ambiguous"}:
|
|
424
|
+
# An option this parser cannot name makes the rest of the
|
|
425
|
+
# invocation unreadable; refuse instead of reading past it.
|
|
323
426
|
return True
|
|
324
|
-
if
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
cursor += 1
|
|
331
|
-
continue
|
|
332
|
-
if token in ENV_OPTIONS_SEPARATE_VALUE:
|
|
333
|
-
cursor += 2
|
|
334
|
-
continue
|
|
335
|
-
return False
|
|
427
|
+
if kind is None:
|
|
428
|
+
if "=" in token and not token.startswith(("=", "-")):
|
|
429
|
+
cursor += 1
|
|
430
|
+
continue
|
|
431
|
+
return False
|
|
432
|
+
cursor += 2 if kind == "separate-value" else 1
|
|
336
433
|
return False
|
|
337
434
|
|
|
338
435
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAwyBjC,CAAC;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CACpD,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA2sBjC,CAAC"}
|
|
@@ -573,6 +573,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
573
573
|
"d18448d642f40d46f690a7c868ed39627cb10b0fdcbd5a9505c26d05163a95d7",
|
|
574
574
|
"dd1aea1b9fdd0da023bf704b331b350bc14620f4364afa5001c6690fcbc940cc",
|
|
575
575
|
"e3407d63eae16662923d46b75b6a41e7ca7ab206b428ea2cbb0b4fee226f6516",
|
|
576
|
+
"e5070ad1408dcd30f1ec44d8c4b9b914a57a9930c0fc9345bd6f28941b52afe3",
|
|
576
577
|
]),
|
|
577
578
|
"scripts/lisa-hooks/block-shell-json-parsing.sh": Object.freeze([
|
|
578
579
|
"1934a15e154fda3c2a40979a5cd6225661b14fe7bc77328a69ce499bea85dba7",
|
|
@@ -663,6 +664,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
663
664
|
"07542e977ed41f094d5a51cae512e4a3246fabe10d0f83676a176abc81d91624",
|
|
664
665
|
"1e8053bb51a01fda0e2489de231ea252473991138da150dbdff72c5292e1ce53",
|
|
665
666
|
"2512f61074d10216dee0aca748caaebad373e6bba2598bc089f30f977c7a6a83",
|
|
667
|
+
"269241ef59e1a29b7511a096005ea08938408578bf40a4e1acb97d8a632251ad",
|
|
666
668
|
"395897d1dc3f0ac92d7c892eaa9b9ddf12078181bb9f5b228965478190b09a91",
|
|
667
669
|
"3c062d0b79961a9a93a822507e893dcdaa71d65d735557727d20464c2489d812",
|
|
668
670
|
"3e67eb4b0710ec195ad7efa4a8c2fd64063897d67725ea2627cf869c7e066201",
|
|
@@ -671,6 +673,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
671
673
|
"5c6b8a6ff3010b11f78b70eda0e73e78e1155b634a781b8abec79e40ac286eb7",
|
|
672
674
|
"6261f7630e71bd95792083f5459a2802382cae95101c724a7311e3810af6c576",
|
|
673
675
|
"9b613888c4c1cc6cc2b1fb6e162a4c766012eab0ec4f8b7f2ac1bc3da6622c97",
|
|
676
|
+
"adbf8dccc221ec83641f1f5358ccafc9ec70a4ea6372ae6ad874603d767d693d",
|
|
674
677
|
"b05540a4d16f8a370e8a76aba5af1cfcf65e9100ded8912ebcc58dfc3838367f",
|
|
675
678
|
"d429b5c3ad47553a73cdb2e0ea3ee81268df85d5374b06a93233d1971f7d15da",
|
|
676
679
|
"e509bfe5f135f63974156ea3aaa1521c11a9fd2a954f80ebb01dd80c54c12881",
|
|
@@ -739,6 +742,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
739
742
|
"475cb9ef86c2ac54c8fd8cb6d63e9a55ea8cd0017e26efbe3c44391a4aeeab41",
|
|
740
743
|
"4c263fef48c03b3b6c623ea8a6cd55505bfaf28197e5072226ea35f9f3d26885",
|
|
741
744
|
"5a0b82045d9795284a109c28e5e9dd97a5488ff540bb7034b84077d1447ffd7c",
|
|
745
|
+
"5e937e22bac62f66e91b288e9076e717147e4b382a431cdc8bbfc56681ebde8e",
|
|
742
746
|
"5eb31c284e820a51312d4484f0669128007326af55ee515923fec33700d003a1",
|
|
743
747
|
"637741a9e5d2904aed24d48efd6bec1326c5573f718a13152807aa0e4b42f0a1",
|
|
744
748
|
"6a8be8577242588f14ab52b25b2a22b6def53aefa9513b4d3d7c49f4d8027079",
|
|
@@ -1326,6 +1330,7 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
1326
1330
|
"d18448d642f40d46f690a7c868ed39627cb10b0fdcbd5a9505c26d05163a95d7",
|
|
1327
1331
|
"dd1aea1b9fdd0da023bf704b331b350bc14620f4364afa5001c6690fcbc940cc",
|
|
1328
1332
|
"e3407d63eae16662923d46b75b6a41e7ca7ab206b428ea2cbb0b4fee226f6516",
|
|
1333
|
+
"e5070ad1408dcd30f1ec44d8c4b9b914a57a9930c0fc9345bd6f28941b52afe3",
|
|
1329
1334
|
]),
|
|
1330
1335
|
"scripts/lisa-hooks/block-shell-json-parsing.sh": Object.freeze([
|
|
1331
1336
|
"1934a15e154fda3c2a40979a5cd6225661b14fe7bc77328a69ce499bea85dba7",
|
|
@@ -1403,6 +1408,7 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
1403
1408
|
]),
|
|
1404
1409
|
"scripts/lisa-reconcile-policy.mjs": Object.freeze([
|
|
1405
1410
|
"2512f61074d10216dee0aca748caaebad373e6bba2598bc089f30f977c7a6a83",
|
|
1411
|
+
"269241ef59e1a29b7511a096005ea08938408578bf40a4e1acb97d8a632251ad",
|
|
1406
1412
|
"395897d1dc3f0ac92d7c892eaa9b9ddf12078181bb9f5b228965478190b09a91",
|
|
1407
1413
|
"3c062d0b79961a9a93a822507e893dcdaa71d65d735557727d20464c2489d812",
|
|
1408
1414
|
"3e67eb4b0710ec195ad7efa4a8c2fd64063897d67725ea2627cf869c7e066201",
|
|
@@ -1410,6 +1416,7 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
1410
1416
|
"5c6b8a6ff3010b11f78b70eda0e73e78e1155b634a781b8abec79e40ac286eb7",
|
|
1411
1417
|
"6261f7630e71bd95792083f5459a2802382cae95101c724a7311e3810af6c576",
|
|
1412
1418
|
"9b613888c4c1cc6cc2b1fb6e162a4c766012eab0ec4f8b7f2ac1bc3da6622c97",
|
|
1419
|
+
"adbf8dccc221ec83641f1f5358ccafc9ec70a4ea6372ae6ad874603d767d693d",
|
|
1413
1420
|
"b05540a4d16f8a370e8a76aba5af1cfcf65e9100ded8912ebcc58dfc3838367f",
|
|
1414
1421
|
"d429b5c3ad47553a73cdb2e0ea3ee81268df85d5374b06a93233d1971f7d15da",
|
|
1415
1422
|
"f27bd7fd72f5fa29dfc1b56b2b1744a8930054943f37da55a3b137f2141d7e57",
|
|
@@ -1469,6 +1476,7 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
1469
1476
|
"475cb9ef86c2ac54c8fd8cb6d63e9a55ea8cd0017e26efbe3c44391a4aeeab41",
|
|
1470
1477
|
"4c263fef48c03b3b6c623ea8a6cd55505bfaf28197e5072226ea35f9f3d26885",
|
|
1471
1478
|
"5a0b82045d9795284a109c28e5e9dd97a5488ff540bb7034b84077d1447ffd7c",
|
|
1479
|
+
"5e937e22bac62f66e91b288e9076e717147e4b382a431cdc8bbfc56681ebde8e",
|
|
1472
1480
|
"5eb31c284e820a51312d4484f0669128007326af55ee515923fec33700d003a1",
|
|
1473
1481
|
"6a8be8577242588f14ab52b25b2a22b6def53aefa9513b4d3d7c49f4d8027079",
|
|
1474
1482
|
"71ff42c2cb8ac7022e0066132476764dd745fb92bf19ccd395000b1fe319abc7",
|