@codyswann/lisa 4.28.2 → 4.28.4
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/cli/doctor-merge-drivers.d.ts.map +1 -1
- package/dist/cli/doctor-merge-drivers.js +4 -2
- package/dist/cli/doctor-merge-drivers.js.map +1 -1
- package/dist/codex/scripts/block-no-verify.sh +302 -97
- package/dist/core/learnings.d.ts +1 -1
- package/dist/core/learnings.d.ts.map +1 -1
- package/dist/core/learnings.js +1 -1
- package/dist/core/learnings.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/project-config-learnings.d.ts +49 -0
- package/dist/core/project-config-learnings.d.ts.map +1 -0
- package/dist/core/project-config-learnings.js +87 -0
- package/dist/core/project-config-learnings.js.map +1 -0
- package/dist/core/project-config.d.ts +2 -18
- package/dist/core/project-config.d.ts.map +1 -1
- package/dist/core/project-config.js +4 -57
- package/dist/core/project-config.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +9 -5
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/migrations/ensure-learnings-gitattributes.d.ts.map +1 -1
- package/dist/migrations/ensure-learnings-gitattributes.js +6 -5
- package/dist/migrations/ensure-learnings-gitattributes.js.map +1 -1
- package/dist/migrations/ensure-learnings-merge-driver.d.ts.map +1 -1
- package/dist/migrations/ensure-learnings-merge-driver.js +6 -3
- package/dist/migrations/ensure-learnings-merge-driver.js.map +1 -1
- 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/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +7 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-persist-learning/SKILL.md +1 -1
- package/plugins/lisa/hooks/block-no-verify.agy.sh +302 -97
- package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +7 -3
- package/plugins/lisa/skills/lisa-persist-learning/SKILL.md +1 -1
- package/plugins/lisa-agy/hooks/block-no-verify.agy.sh +302 -97
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +7 -3
- package/plugins/lisa-agy/skills/lisa-persist-learning/SKILL.md +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/skills/lisa-drive-pr-to-merge/SKILL.md +7 -3
- package/plugins/lisa-copilot/skills/lisa-persist-learning/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +7 -3
- package/plugins/lisa-cursor/skills/lisa-persist-learning/SKILL.md +1 -1
- 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 +302 -97
- package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +7 -3
- package/plugins/src/base/skills/lisa-persist-learning/SKILL.md +1 -1
- package/scripts/verify-packed-learnings-contract.mjs +101 -2
- package/dist/core/learnings-merge-driver-config.d.ts +0 -7
- package/dist/core/learnings-merge-driver-config.d.ts.map +0 -1
- package/dist/core/learnings-merge-driver-config.js +0 -58
- package/dist/core/learnings-merge-driver-config.js.map +0 -1
package/dist/core/learnings.d.ts
CHANGED
|
@@ -7,5 +7,5 @@ export * from "./learnings-projection.js";
|
|
|
7
7
|
export * from "./learnings-supersede.js";
|
|
8
8
|
export * from "./learnings-writer.js";
|
|
9
9
|
export * from "./upstream-attribution-body.js";
|
|
10
|
-
export { DEFAULT_PROJECT_LEARNINGS_FILE, HOST_RULES_DIR, LEGACY_PROJECT_RULES_FILE, PROJECT_LEARNINGS_FILENAME, readProjectConfig, resolveLegacyProjectLearningsFile, resolveLegacyProjectRulesFile, resolveProjectLearningsFile, type LearningsConfig, type ProjectConfig, } from "./project-config.js";
|
|
10
|
+
export { DEFAULT_PROJECT_LEARNINGS_FILE, HOST_RULES_DIR, LEGACY_PROJECT_RULES_FILE, PROJECT_LEARNINGS_FILENAME, readProjectConfig, resolveLearningsSettings, resolveLegacyProjectLearningsFile, resolveLegacyProjectRulesFile, resolveProjectLearningsFile, type LearningsConfig, type ProjectConfig, } from "./project-config.js";
|
|
11
11
|
//# sourceMappingURL=learnings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings.d.ts","sourceRoot":"","sources":["../../src/core/learnings.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,iCAAiC,EACjC,6BAA6B,EAC7B,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"learnings.d.ts","sourceRoot":"","sources":["../../src/core/learnings.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,wBAAwB,EACxB,iCAAiC,EACjC,6BAA6B,EAC7B,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC"}
|
package/dist/core/learnings.js
CHANGED
|
@@ -7,5 +7,5 @@ export * from "./learnings-projection.js";
|
|
|
7
7
|
export * from "./learnings-supersede.js";
|
|
8
8
|
export * from "./learnings-writer.js";
|
|
9
9
|
export * from "./upstream-attribution-body.js";
|
|
10
|
-
export { DEFAULT_PROJECT_LEARNINGS_FILE, HOST_RULES_DIR, LEGACY_PROJECT_RULES_FILE, PROJECT_LEARNINGS_FILENAME, readProjectConfig, resolveLegacyProjectLearningsFile, resolveLegacyProjectRulesFile, resolveProjectLearningsFile, } from "./project-config.js";
|
|
10
|
+
export { DEFAULT_PROJECT_LEARNINGS_FILE, HOST_RULES_DIR, LEGACY_PROJECT_RULES_FILE, PROJECT_LEARNINGS_FILENAME, readProjectConfig, resolveLearningsSettings, resolveLegacyProjectLearningsFile, resolveLegacyProjectRulesFile, resolveProjectLearningsFile, } from "./project-config.js";
|
|
11
11
|
//# sourceMappingURL=learnings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings.js","sourceRoot":"","sources":["../../src/core/learnings.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,iCAAiC,EACjC,6BAA6B,EAC7B,2BAA2B,GAG5B,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"learnings.js","sourceRoot":"","sources":["../../src/core/learnings.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,wBAAwB,EACxB,iCAAiC,EACjC,6BAA6B,EAC7B,2BAA2B,GAG5B,MAAM,qBAAqB,CAAC"}
|
|
@@ -20,9 +20,9 @@ export const NIGHTLY_E2E_GUARD_BEHAVIOR_CERTIFICATES = Object.freeze({
|
|
|
20
20
|
}),
|
|
21
21
|
"312e8962e21be2f3c6c6c0235b0c6159b8dc39425508b4965c7df87fb1333380": Object.freeze({
|
|
22
22
|
contractVersion: "1.9.0",
|
|
23
|
-
packageVersions: Object.freeze(["4.28.
|
|
23
|
+
packageVersions: Object.freeze(["4.28.4"]),
|
|
24
24
|
provenances: Object.freeze([
|
|
25
|
-
"workspace package @codyswann/lisa@4.28.
|
|
25
|
+
"workspace package @codyswann/lisa@4.28.4 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
|
|
26
26
|
]),
|
|
27
27
|
}),
|
|
28
28
|
"898ee0247806c7aa6e98328662d80bcff22ff067999298865462a58daef8bb22": Object.freeze({
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Optional `learnings` configuration block in `.lisa.config.json`. */
|
|
2
|
+
export interface LearningsConfig {
|
|
3
|
+
/** Safe repo-relative override for the machine-managed learnings ledger. */
|
|
4
|
+
readonly file?: string;
|
|
5
|
+
/** Explicit false declines local merge-driver installation. */
|
|
6
|
+
readonly mergeDriver?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Minimum project-config shape consumed by the pure settings resolver. */
|
|
9
|
+
interface ConfigWithLearnings {
|
|
10
|
+
readonly learnings?: LearningsConfig;
|
|
11
|
+
}
|
|
12
|
+
/** Resolved learnings behavior derived from one validated config snapshot. */
|
|
13
|
+
export type ResolvedLearningsSettings = Readonly<{
|
|
14
|
+
learningsFile: string;
|
|
15
|
+
mergeDriverEnabled: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Validate a `learnings.file` override outside every eager context surface.
|
|
19
|
+
* @param value - Raw configured path
|
|
20
|
+
* @param source - Config source for errors
|
|
21
|
+
* @returns Validated project-relative learnings path
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateLearningsFile(value: unknown, source: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Validate the closed optional `learnings` block.
|
|
26
|
+
* @param value - Raw learnings value
|
|
27
|
+
* @param source - Config source for errors
|
|
28
|
+
* @returns Typed learnings config, or undefined when absent
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateLearningsConfig(value: unknown, source: string): LearningsConfig | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve ledger location and merge-driver policy from one config snapshot.
|
|
33
|
+
*
|
|
34
|
+
* The driver is strictly opt-out: only literal false disables it. Runtime
|
|
35
|
+
* config reads validate the boolean before this resolver runs; keeping the
|
|
36
|
+
* comparison here as `!== false` preserves the safe default for typed callers.
|
|
37
|
+
* @param config - Validated project config snapshot
|
|
38
|
+
* @returns Resolved ledger path and merge-driver enablement
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveLearningsSettings(config: ConfigWithLearnings): ResolvedLearningsSettings;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the validated ledger path while preserving the established public
|
|
43
|
+
* API used by writers and generated agent instructions.
|
|
44
|
+
* @param config - Project config carrying an optional learnings block
|
|
45
|
+
* @returns Safe project-relative learnings Markdown path
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveProjectLearningsFile(config: ConfigWithLearnings): string;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=project-config-learnings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-config-learnings.d.ts","sourceRoot":"","sources":["../../src/core/project-config-learnings.ts"],"names":[],"mappings":"AAcA,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,2EAA2E;AAC3E,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;CACtC;AAED,8EAA8E;AAC9E,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,GACb,eAAe,GAAG,SAAS,CAyB7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,GAC1B,yBAAyB,CAK3B;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,mBAAmB,GAC1B,MAAM,CAIR"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validated `.lisa.config.json` settings for the project-learnings ledger.
|
|
3
|
+
*
|
|
4
|
+
* Keeping the closed nested schema and its pure resolver together gives every
|
|
5
|
+
* mutating caller one typed snapshot: the ledger path and merge-driver opt-out
|
|
6
|
+
* can no longer be read through independent parsers that disagree on errors or
|
|
7
|
+
* timing.
|
|
8
|
+
* @module core/project-config-learnings
|
|
9
|
+
*/
|
|
10
|
+
import { DEFAULT_PROJECT_LEARNINGS_FILE } from "./learnings-location.js";
|
|
11
|
+
import { validateConfiguredLearningsFile } from "./configured-learnings-path.js";
|
|
12
|
+
const LEARNINGS_FIELDS = ["file", "mergeDriver"];
|
|
13
|
+
/**
|
|
14
|
+
* Validate a `learnings.file` override outside every eager context surface.
|
|
15
|
+
* @param value - Raw configured path
|
|
16
|
+
* @param source - Config source for errors
|
|
17
|
+
* @returns Validated project-relative learnings path
|
|
18
|
+
*/
|
|
19
|
+
export function validateLearningsFile(value, source) {
|
|
20
|
+
return validateConfiguredLearningsFile(value, source);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Validate the closed optional `learnings` block.
|
|
24
|
+
* @param value - Raw learnings value
|
|
25
|
+
* @param source - Config source for errors
|
|
26
|
+
* @returns Typed learnings config, or undefined when absent
|
|
27
|
+
*/
|
|
28
|
+
export function validateLearningsConfig(value, source) {
|
|
29
|
+
if (value === undefined) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
33
|
+
throw new Error(`Invalid learnings in ${source}: expected an object`);
|
|
34
|
+
}
|
|
35
|
+
const object = value;
|
|
36
|
+
const unknown = Object.keys(object).find(key => !LEARNINGS_FIELDS.includes(key));
|
|
37
|
+
if (unknown !== undefined) {
|
|
38
|
+
throw new Error(`Invalid learnings.${unknown} in ${source}: unknown field; expected file or mergeDriver`);
|
|
39
|
+
}
|
|
40
|
+
const file = object.file === undefined
|
|
41
|
+
? undefined
|
|
42
|
+
: validateLearningsFile(object.file, source);
|
|
43
|
+
const mergeDriver = validateMergeDriver(object.mergeDriver, source);
|
|
44
|
+
return {
|
|
45
|
+
...(file === undefined ? {} : { file }),
|
|
46
|
+
...(mergeDriver === undefined ? {} : { mergeDriver }),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolve ledger location and merge-driver policy from one config snapshot.
|
|
51
|
+
*
|
|
52
|
+
* The driver is strictly opt-out: only literal false disables it. Runtime
|
|
53
|
+
* config reads validate the boolean before this resolver runs; keeping the
|
|
54
|
+
* comparison here as `!== false` preserves the safe default for typed callers.
|
|
55
|
+
* @param config - Validated project config snapshot
|
|
56
|
+
* @returns Resolved ledger path and merge-driver enablement
|
|
57
|
+
*/
|
|
58
|
+
export function resolveLearningsSettings(config) {
|
|
59
|
+
return Object.freeze({
|
|
60
|
+
learningsFile: resolveProjectLearningsFile(config),
|
|
61
|
+
mergeDriverEnabled: config.learnings?.mergeDriver !== false,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Resolve the validated ledger path while preserving the established public
|
|
66
|
+
* API used by writers and generated agent instructions.
|
|
67
|
+
* @param config - Project config carrying an optional learnings block
|
|
68
|
+
* @returns Safe project-relative learnings Markdown path
|
|
69
|
+
*/
|
|
70
|
+
export function resolveProjectLearningsFile(config) {
|
|
71
|
+
return config.learnings?.file === undefined
|
|
72
|
+
? DEFAULT_PROJECT_LEARNINGS_FILE
|
|
73
|
+
: validateLearningsFile(config.learnings.file, ".lisa.config.json");
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validate an optional merge-driver flag while preserving absence.
|
|
77
|
+
* @param value - Raw mergeDriver setting
|
|
78
|
+
* @param source - Config source for errors
|
|
79
|
+
* @returns Boolean setting or undefined
|
|
80
|
+
*/
|
|
81
|
+
function validateMergeDriver(value, source) {
|
|
82
|
+
if (value === undefined || typeof value === "boolean") {
|
|
83
|
+
return value;
|
|
84
|
+
}
|
|
85
|
+
throw new Error(`Invalid learnings.mergeDriver in ${source}: expected boolean, received ${JSON.stringify(value)}`);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=project-config-learnings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-config-learnings.js","sourceRoot":"","sources":["../../src/core/project-config-learnings.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEjF,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAU,CAAC;AAqB1D;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc,EAAE,MAAc;IAClE,OAAO,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAc,EACd,MAAc;IAEd,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,sBAAsB,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACtC,GAAG,CAAC,EAAE,CAAC,CAAE,gBAAsC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC9D,CAAC;IACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,qBAAqB,OAAO,OAAO,MAAM,+CAA+C,CACzF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GACR,MAAM,CAAC,IAAI,KAAK,SAAS;QACvB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpE,OAAO;QACL,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAA2B;IAE3B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa,EAAE,2BAA2B,CAAC,MAAM,CAAC;QAClD,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,KAAK,KAAK;KAC5D,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAA2B;IAE3B,OAAO,MAAM,CAAC,SAAS,EAAE,IAAI,KAAK,SAAS;QACzC,CAAC,CAAC,8BAA8B;QAChC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAC1B,KAAc,EACd,MAAc;IAEd,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CACb,oCAAoC,MAAM,gCAAgC,IAAI,CAAC,SAAS,CACtF,KAAK,CACN,EAAE,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type Harness } from "./config.js";
|
|
2
|
+
import { type LearningsConfig } from "./project-config-learnings.js";
|
|
2
3
|
import { type VerificationConfig } from "./project-config-kane.js";
|
|
3
4
|
import { type NightlyE2EConfig } from "./project-config-nightly-e2e.js";
|
|
4
5
|
export { AUTO_LOADED_RULES_DIR_PREFIXES, DEFAULT_PROJECT_LEARNINGS_FILE, PROJECT_LEARNINGS_FILENAME, } from "./learnings-location.js";
|
|
6
|
+
export { resolveLearningsSettings, resolveProjectLearningsFile, type LearningsConfig, type ResolvedLearningsSettings, } from "./project-config-learnings.js";
|
|
5
7
|
export type { BrowserVerificationConfig, KaneBrowserConfig, VerificationConfig, } from "./project-config-kane.js";
|
|
6
8
|
export type { NightlyE2EConfig, NightlyE2ETrackingConfig, NightlyE2ETrackingDestination, } from "./project-config-nightly-e2e.js";
|
|
7
9
|
/** Filename of the per-project config, relative to the destination root */
|
|
@@ -26,15 +28,6 @@ export declare const HOST_RULES_DIR = ".agents/rules";
|
|
|
26
28
|
* is human-gated work.
|
|
27
29
|
*/
|
|
28
30
|
export declare const LEGACY_PROJECT_RULES_FILE = ".claude/rules/PROJECT_RULES.md";
|
|
29
|
-
/** Optional `learnings` configuration block in `.lisa.config.json`. */
|
|
30
|
-
export interface LearningsConfig {
|
|
31
|
-
/**
|
|
32
|
-
* Relative path to the machine-managed learnings ledger, overriding the
|
|
33
|
-
* `.lisa/PROJECT_LEARNINGS.md` default. Must be a safe relative Markdown path
|
|
34
|
-
* outside every auto-loaded rules tree.
|
|
35
|
-
*/
|
|
36
|
-
readonly file?: string;
|
|
37
|
-
}
|
|
38
31
|
/**
|
|
39
32
|
* Schema of `.lisa.config.json`. Additional fields may be added in future
|
|
40
33
|
* versions; unknown fields are preserved on round-trip.
|
|
@@ -69,15 +62,6 @@ export interface ProjectConfig {
|
|
|
69
62
|
* @returns Safe project-relative Markdown path
|
|
70
63
|
*/
|
|
71
64
|
export declare function resolveLegacyProjectRulesFile(config: ProjectConfig): string;
|
|
72
|
-
/**
|
|
73
|
-
* Resolve the machine-managed learnings ledger path. A validated
|
|
74
|
-
* `learnings.file` override wins; otherwise the `.lisa/PROJECT_LEARNINGS.md`
|
|
75
|
-
* default is used. The path is intentionally independent of `projectRulesFile`:
|
|
76
|
-
* the ledger is cold state, not a rules sibling.
|
|
77
|
-
* @param config - Parsed project configuration
|
|
78
|
-
* @returns Safe project-relative learnings Markdown path
|
|
79
|
-
*/
|
|
80
|
-
export declare function resolveProjectLearningsFile(config: ProjectConfig): string;
|
|
81
65
|
/**
|
|
82
66
|
* Resolve the ledger's LEGACY location — the sibling of the retired single-file
|
|
83
67
|
* rules path, where releases before the `.lisa/` relocation kept it. Used only
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/core/project-config.ts"],"names":[],"mappings":"AAYA,OAAO,EAML,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/core/project-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,13 @@ import * as fse from "fs-extra";
|
|
|
11
11
|
import { readFile, writeFile } from "node:fs/promises";
|
|
12
12
|
import * as path from "node:path";
|
|
13
13
|
import { ACCEPTED_HARNESS_INPUTS, DEFAULT_HARNESS, HARNESS_ALIASES, HARNESS_VALUES, LEGACY_HARNESS_ALIASES, } from "./config.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { PROJECT_LEARNINGS_FILENAME } from "./learnings-location.js";
|
|
15
|
+
import { validateLearningsConfig, } from "./project-config-learnings.js";
|
|
16
|
+
import { validateSafeRelativeMarkdownPath } from "./safe-relative-markdown-path.js";
|
|
16
17
|
import { validateVerificationConfig, } from "./project-config-kane.js";
|
|
17
18
|
import { validateNightlyE2EConfig, } from "./project-config-nightly-e2e.js";
|
|
18
|
-
import { validateSafeRelativeMarkdownPath } from "./safe-relative-markdown-path.js";
|
|
19
19
|
export { AUTO_LOADED_RULES_DIR_PREFIXES, DEFAULT_PROJECT_LEARNINGS_FILE, PROJECT_LEARNINGS_FILENAME, } from "./learnings-location.js";
|
|
20
|
+
export { resolveLearningsSettings, resolveProjectLearningsFile, } from "./project-config-learnings.js";
|
|
20
21
|
/** Filename of the per-project config, relative to the destination root */
|
|
21
22
|
export const PROJECT_CONFIG_FILENAME = ".lisa.config.json";
|
|
22
23
|
/**
|
|
@@ -55,20 +56,6 @@ export function resolveLegacyProjectRulesFile(config) {
|
|
|
55
56
|
const configured = config.projectRulesFile ?? LEGACY_PROJECT_RULES_FILE;
|
|
56
57
|
return validateProjectRulesFile(configured, PROJECT_CONFIG_FILENAME);
|
|
57
58
|
}
|
|
58
|
-
/**
|
|
59
|
-
* Resolve the machine-managed learnings ledger path. A validated
|
|
60
|
-
* `learnings.file` override wins; otherwise the `.lisa/PROJECT_LEARNINGS.md`
|
|
61
|
-
* default is used. The path is intentionally independent of `projectRulesFile`:
|
|
62
|
-
* the ledger is cold state, not a rules sibling.
|
|
63
|
-
* @param config - Parsed project configuration
|
|
64
|
-
* @returns Safe project-relative learnings Markdown path
|
|
65
|
-
*/
|
|
66
|
-
export function resolveProjectLearningsFile(config) {
|
|
67
|
-
if (config.learnings?.file !== undefined) {
|
|
68
|
-
return validateLearningsFile(config.learnings.file, PROJECT_CONFIG_FILENAME);
|
|
69
|
-
}
|
|
70
|
-
return DEFAULT_PROJECT_LEARNINGS_FILE;
|
|
71
|
-
}
|
|
72
59
|
/**
|
|
73
60
|
* Resolve the ledger's LEGACY location — the sibling of the retired single-file
|
|
74
61
|
* rules path, where releases before the `.lisa/` relocation kept it. Used only
|
|
@@ -238,15 +225,6 @@ function validateOptionalHarness(value, configPath) {
|
|
|
238
225
|
const allowed = ACCEPTED_HARNESS_INPUTS.join(" | ");
|
|
239
226
|
throw new Error(`Invalid harness in ${configPath}: expected ${allowed}, got ${JSON.stringify(value)}`);
|
|
240
227
|
}
|
|
241
|
-
/**
|
|
242
|
-
* Validate a configurable destination as a safe, relative, non-traversing
|
|
243
|
-
* Markdown path. Shared by every path-typed config field; the `field` label is
|
|
244
|
-
* interpolated into each diagnostic so callers get a field-specific message.
|
|
245
|
-
* @param value - Raw configured path
|
|
246
|
-
* @param source - Config source for errors
|
|
247
|
-
* @param field - Config field name used in error messages
|
|
248
|
-
* @returns Validated project-relative path
|
|
249
|
-
*/
|
|
250
228
|
/**
|
|
251
229
|
* Validate the configurable rules destination as a safe Markdown path, and
|
|
252
230
|
* reject the reserved learnings filename so a rules file can never collide with
|
|
@@ -263,37 +241,6 @@ function validateProjectRulesFile(value, source) {
|
|
|
263
241
|
}
|
|
264
242
|
return safe;
|
|
265
243
|
}
|
|
266
|
-
/**
|
|
267
|
-
* Validate a `learnings.file` override: a safe relative Markdown path that does
|
|
268
|
-
* NOT resolve inside any auto-loaded rules tree. Placing the ledger in an eager
|
|
269
|
-
* tree is exactly the defect this relocation exists to prevent, so it is a hard
|
|
270
|
-
* rejection with a readable reason rather than a silent fallback.
|
|
271
|
-
* @param value - Raw configured path
|
|
272
|
-
* @param source - Config source for errors
|
|
273
|
-
* @returns Validated project-relative learnings path
|
|
274
|
-
*/
|
|
275
|
-
function validateLearningsFile(value, source) {
|
|
276
|
-
return validateConfiguredLearningsFile(value, source);
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Validate the optional `learnings` block, preserving an absent value.
|
|
280
|
-
* @param value - Raw learnings value
|
|
281
|
-
* @param source - Config source for errors
|
|
282
|
-
* @returns Typed learnings config, or undefined when absent
|
|
283
|
-
*/
|
|
284
|
-
function validateLearningsConfig(value, source) {
|
|
285
|
-
if (value === undefined) {
|
|
286
|
-
return undefined;
|
|
287
|
-
}
|
|
288
|
-
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
289
|
-
throw new Error(`Invalid learnings in ${source}: expected an object`);
|
|
290
|
-
}
|
|
291
|
-
const file = value.file;
|
|
292
|
-
if (file === undefined) {
|
|
293
|
-
return {};
|
|
294
|
-
}
|
|
295
|
-
return { file: validateLearningsFile(file, source) };
|
|
296
|
-
}
|
|
297
244
|
/**
|
|
298
245
|
* Narrow an unknown value to the Harness type
|
|
299
246
|
* @param value - Untrusted value to test
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/core/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,cAAc,EACd,sBAAsB,GAEvB,MAAM,aAAa,CAAC;AACrB,OAAO,
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/core/project-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAs+EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAs+EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAm+PjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -357,7 +357,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
357
357
|
"plugins/src/base/hooks/block-instruction-file-edits.agy.sh": "aa249cae53caeb3e0fb6d6af114e2756084f45a2896332fb063a9f20e4902125",
|
|
358
358
|
"plugins/src/base/hooks/block-instruction-file-edits.sh": "d47314b66d6ce85f77d6e058f861eede4462b2b0a33d54e82ff1c931167ec3f7",
|
|
359
359
|
"plugins/src/base/hooks/block-managed-file-edits.sh": "9b566bd1ff465147955300ce66b75c866db461a04dc67866c22bb928c757a616",
|
|
360
|
-
"plugins/src/base/hooks/block-no-verify.agy.sh": "
|
|
360
|
+
"plugins/src/base/hooks/block-no-verify.agy.sh": "96bb101825a4f20f49dcb2b8cd87af055e7a05c33b4b614b957e34811294ddad",
|
|
361
361
|
"plugins/src/base/hooks/block-no-verify.sh": "a091c68c8ce67d250adb89600a0875d63c8a57a48f179a5eb5e527cc394dc128",
|
|
362
362
|
"plugins/src/base/hooks/block-shell-json-parsing.agy.sh": "dc688efe382e7b8fe6f6c88bb0fde851527128cae778599559f23a93f1c9ec86",
|
|
363
363
|
"plugins/src/base/hooks/block-shell-json-parsing.sh": "90601e31603c440d8f19d213d63bfef8d18596c60f88cb6e28c93d12453c5c0c",
|
|
@@ -539,7 +539,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
539
539
|
"plugins/src/base/skills/lisa-detect-tooling/scripts/commands.mjs": "e28bd61fdde4a336b56ae3395423026943a5816015719d31d04f0d5a0ab50eec",
|
|
540
540
|
"plugins/src/base/skills/lisa-detect-tooling/scripts/detect-tooling.mjs": "d9419814fc04c935bd7e320e85b1977c9bfc9275d9ea5fb557002ad438ee7925",
|
|
541
541
|
"plugins/src/base/skills/lisa-doctor/SKILL.md": "ab7bb855fd3ebe321e41b0143815f202b70f6ba38f6678791d6d9e933e0c3fd8",
|
|
542
|
-
"plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "
|
|
542
|
+
"plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "83ce3ffcdb196f9edee9c29f0129e9f00e5bd5bd73c500d55e72020aa00f5359",
|
|
543
543
|
"plugins/src/base/skills/lisa-epic-triage/SKILL.md": "d02760411249bddbd396f283191fe3e82bb7b95bf9393a19a7025dc5a57c3ab7",
|
|
544
544
|
"plugins/src/base/skills/lisa-evaluation-suite/SKILL.md": "96b5c2091ccd22a565935a7b0b917f67998881b81055ce3e4d518319472eac8b",
|
|
545
545
|
"plugins/src/base/skills/lisa-exploratory-qa/SKILL.md": "562b80ea0be5ffb1087386495a380bfb5808a1da4c08a7e253c5229d747bc5c7",
|
|
@@ -623,7 +623,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
623
623
|
"plugins/src/base/skills/lisa-parity-sentry-seer/SKILL.md": "ec09515906a55e98ac0f619f048f14c4a16db74c1cd5744dda0cdfa42ce7fed6",
|
|
624
624
|
"plugins/src/base/skills/lisa-parity-skill-creator/SKILL.md": "616e0493f75fe92c18137548d7c86a91a9b04d9844ca76fa3f14156e3e7814e5",
|
|
625
625
|
"plugins/src/base/skills/lisa-performance-review/SKILL.md": "351542c256e54940e6d672a70606b8414425c6435ae6f026841bcc02f9fce9c4",
|
|
626
|
-
"plugins/src/base/skills/lisa-persist-learning/SKILL.md": "
|
|
626
|
+
"plugins/src/base/skills/lisa-persist-learning/SKILL.md": "f99ee553e703b055cb0a21c84b306ac64be399bfdc4876b3a161be7a92999a61",
|
|
627
627
|
"plugins/src/base/skills/lisa-plan/SKILL.md": "9c372e106afd53ff988046119cf36b0f6519c4426775dd8ad3c9d9baeee5d3e2",
|
|
628
628
|
"plugins/src/base/skills/lisa-plugin-sync-explain/SKILL.md": "b41619f3d0d342af2438afd54cb97db7d2445e54e3fc7bb012292079acbc6a4f",
|
|
629
629
|
"plugins/src/base/skills/lisa-posthog-access/SKILL.md": "c18095cf3343746c428167969cbde03e400e50f3e1a3b3bd4345f262a8d0a60d",
|
|
@@ -1185,7 +1185,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1185
1185
|
"scripts/verify-health-contract-built.mjs": "4041780d412bee7b9e1bbe24d908bac64705184a8b0698f0d5bb748ec36b0bcd",
|
|
1186
1186
|
"scripts/verify-health-deterministic-built.mjs": "9016663d16c93d0d0d74b41a957d200cd3aa8ef5b12e0879d24ba5ea041ab307",
|
|
1187
1187
|
"scripts/verify-learner-frontmatter-built.mjs": "b8ac0240726721a047811e98d42f661426abc3e427a0c86f3b20082eb498809d",
|
|
1188
|
-
"scripts/verify-packed-learnings-contract.mjs": "
|
|
1188
|
+
"scripts/verify-packed-learnings-contract.mjs": "2227b32f3b3dc2dc6817a60b4998b64881c03e30ecd15cb52b6d6f95a5870613",
|
|
1189
1189
|
"tsconfig/base.json": "d04a105ec81aa9dc69d230d4a83406d920c305b6fc13c641ebafde0c41fc658f",
|
|
1190
1190
|
"tsconfig/build.json": "a743350ea93b0e8d2151c974c5a8a4cbcf946cd7f06c40d83146079bde70afe1",
|
|
1191
1191
|
"tsconfig/cdk.json": "f9c0bfad5e40ce30bc037f08abf2f8feb78963484f2929ab17ec187ffe34b732",
|
|
@@ -7550,7 +7550,6 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7550
7550
|
"src/core/learnings-lock-capability.ts": true,
|
|
7551
7551
|
"src/core/learnings-lock-fs.ts": true,
|
|
7552
7552
|
"src/core/learnings-lock.ts": true,
|
|
7553
|
-
"src/core/learnings-merge-driver-config.ts": true,
|
|
7554
7553
|
"src/core/learnings-merge-driver-install.ts": true,
|
|
7555
7554
|
"src/core/learnings-merge-driver.ts": true,
|
|
7556
7555
|
"src/core/learnings-merge.ts": true,
|
|
@@ -7572,6 +7571,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7572
7571
|
"src/core/nightly-e2e-guard-behavior-certificate.ts": true,
|
|
7573
7572
|
"src/core/override-floors.ts": true,
|
|
7574
7573
|
"src/core/project-config-kane.ts": true,
|
|
7574
|
+
"src/core/project-config-learnings.ts": true,
|
|
7575
7575
|
"src/core/project-config-nightly-e2e.ts": true,
|
|
7576
7576
|
"src/core/project-config.ts": true,
|
|
7577
7577
|
"src/core/reconciliation-report.ts": true,
|
|
@@ -8344,6 +8344,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8344
8344
|
"tests/unit/core/plugin-sync-marker.test.ts": true,
|
|
8345
8345
|
"tests/unit/core/project-config-harness-migration.test.ts": true,
|
|
8346
8346
|
"tests/unit/core/project-config-kane.test.ts": true,
|
|
8347
|
+
"tests/unit/core/project-config-learnings-architecture.test.ts": true,
|
|
8348
|
+
"tests/unit/core/project-config-learnings.test.ts": true,
|
|
8347
8349
|
"tests/unit/core/project-config-nightly-e2e-default.test.ts": true,
|
|
8348
8350
|
"tests/unit/core/project-config-nightly-e2e.test.ts": true,
|
|
8349
8351
|
"tests/unit/core/project-config.test.ts": true,
|
|
@@ -8398,6 +8400,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8398
8400
|
"tests/unit/hooks/block-managed-file-edits.test.ts": true,
|
|
8399
8401
|
"tests/unit/hooks/block-no-verify-command-config.test.ts": true,
|
|
8400
8402
|
"tests/unit/hooks/block-no-verify-missing-jq.test.ts": true,
|
|
8403
|
+
"tests/unit/hooks/block-no-verify-nested-shell-parity.test.ts": true,
|
|
8401
8404
|
"tests/unit/hooks/block-no-verify-short-flag.test.ts": true,
|
|
8402
8405
|
"tests/unit/hooks/block-no-verify.test.ts": true,
|
|
8403
8406
|
"tests/unit/hooks/block-shell-json-parsing-missing-deps.test.ts": true,
|
|
@@ -8942,6 +8945,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8942
8945
|
"tests/unit/strategies/learnings-audit-contract.test.ts": true,
|
|
8943
8946
|
"tests/unit/strategies/learnings-confirmation-contract.test.ts": true,
|
|
8944
8947
|
"tests/unit/strategies/learnings-fingerprint-contract.test.ts": true,
|
|
8948
|
+
"tests/unit/strategies/learnings-merge-driver-opt-out-contract.test.ts": true,
|
|
8945
8949
|
"tests/unit/strategies/learnings-overflow-contract.test.ts": true,
|
|
8946
8950
|
"tests/unit/strategies/lifecycle-label-claimability.test.ts": true,
|
|
8947
8951
|
"tests/unit/strategies/lifecycle-label-trust-contract.test.ts": true,
|