hippo-memory 1.14.0 → 1.15.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/audit.d.ts +1 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +173 -48
- package/dist/cli.js.map +1 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +556 -472
- package/dist/db.js.map +1 -1
- package/dist/decisions.d.ts +91 -0
- package/dist/decisions.d.ts.map +1 -0
- package/dist/decisions.js +278 -0
- package/dist/decisions.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +161 -0
- package/dist/server.js.map +1 -1
- package/dist/src/audit.js.map +1 -1
- package/dist/src/cli.js +173 -48
- package/dist/src/cli.js.map +1 -1
- package/dist/src/db.js +556 -472
- package/dist/src/db.js.map +1 -1
- package/dist/src/decisions.js +278 -0
- package/dist/src/decisions.js.map +1 -0
- package/dist/src/server.js +161 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +46 -46
- package/extensions/openclaw-plugin/package.json +14 -14
- package/openclaw.plugin.json +45 -45
- package/package.json +75 -75
package/dist/audit.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface AuditResult {
|
|
|
15
15
|
export declare function auditMemory(entry: MemoryEntry): AuditIssue | null;
|
|
16
16
|
export declare function auditMemories(entries: MemoryEntry[]): AuditResult;
|
|
17
17
|
export declare function isContentWorthStoring(content: string): boolean;
|
|
18
|
-
export type AuditOp = 'remember' | 'recall' | 'promote' | 'supersede' | 'forget' | 'archive_raw' | 'auth_revoke' | 'auth_create' | 'outcome' | 'consolidate' | 'audit_prune' | 'summary_marked_dirty' | 'summary_marked_clean' | 'summary_rebuilt' | 'predict_create' | 'predict_close' | 'predict_baserate' | 'recall_autodebias_hint' | 'recall_autodebias_hint_no_class_match' | 'recall_autodebias_hint_tiebreak' | 'recall_anchor_detected_query_repeat' | 'recall_anchor_detected_memory_dominance' | 'recall_anchor_skipped_no_session' | 'recall_availability_detected';
|
|
18
|
+
export type AuditOp = 'remember' | 'recall' | 'promote' | 'supersede' | 'forget' | 'archive_raw' | 'auth_revoke' | 'auth_create' | 'outcome' | 'consolidate' | 'audit_prune' | 'summary_marked_dirty' | 'summary_marked_clean' | 'summary_rebuilt' | 'predict_create' | 'predict_close' | 'predict_baserate' | 'recall_autodebias_hint' | 'recall_autodebias_hint_no_class_match' | 'recall_autodebias_hint_tiebreak' | 'recall_anchor_detected_query_repeat' | 'recall_anchor_detected_memory_dominance' | 'recall_anchor_skipped_no_session' | 'recall_availability_detected' | 'decision_create' | 'decision_supersede' | 'decision_close';
|
|
19
19
|
export interface AppendAuditOpts {
|
|
20
20
|
tenantId: string;
|
|
21
21
|
actor: string;
|
package/dist/audit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAuDD,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,CA6BjE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,CAWjE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ9D;AAMD,MAAM,MAAM,OAAO,GACf,UAAU,GACV,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,aAAa,GACb,aAAa,GACb,aAAa,GACb,SAAS,GACT,aAAa,GACb,aAAa,GACb,sBAAsB,GACtB,sBAAsB,GACtB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,wBAAwB,GACxB,uCAAuC,GACvC,iCAAiC,GACjC,qCAAqC,GACrC,yCAAyC,GACzC,kCAAkC,GAClC,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAuDD,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,CA6BjE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,CAWjE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ9D;AAMD,MAAM,MAAM,OAAO,GACf,UAAU,GACV,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,aAAa,GACb,aAAa,GACb,aAAa,GACb,SAAS,GACT,aAAa,GACb,aAAa,GACb,sBAAsB,GACtB,sBAAsB,GACtB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,wBAAwB,GACxB,uCAAuC,GACvC,iCAAiC,GACjC,qCAAqC,GACrC,yCAAyC,GACzC,kCAAkC,GAClC,8BAA8B,GAC9B,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAUD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAWlF;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,GAAG,UAAU,EAAE,CAmCzF"}
|
package/dist/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;IACnE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;IAC/D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACjE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;IACvE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;IACrE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM;IACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;CACpE,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAEpC,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC/C,MAAM,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,kCAAkC;IAClC,IAAI,oDAAoD,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,mCAAmC;IACnC,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,gDAAgD;IAChD,IAAI,8DAA8D,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACxF,gBAAgB;IAChB,IAAI,yCAAyC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,gBAAgB;IAChB,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAClE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,SAAS,IAAI,aAAa,IAAI,OAAO,IAAI,OAAO;QAAE,OAAO,KAAK,CAAC;IACnE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAErC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAC7F,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAC9F,CAAC;IAED,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAC;IACjH,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;IAC3G,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,WAAW,kCAAkC,EAAE,CAAC;IAC7H,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;IAC3H,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,gBAAgB,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,OAAO,IAAI,CAAC;AACd,CAAC;AA2CD,uEAAuE;AACvE,0EAA0E;AAC1E,0EAA0E;AAC1E,wDAAwD;AACxD,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAc;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAoB,EAAE,IAAqB;IAC1E,EAAE,CAAC,OAAO,CACR,sGAAsG,CACvG,CAAC,GAAG,CACH,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACxB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,QAAQ,IAAI,IAAI,EACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,kBAAkB,CAAC,CACxD,CAAC;AACJ,CAAC;AAmBD,MAAM,UAAU,gBAAgB,CAAC,EAAoB,EAAE,IAAoB;IACzE,MAAM,KAAK,GAAa,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;8BACwB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC,CAChF;SACA,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAQrB,CAAC;IACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,EAAE,EAAE,CAAC,CAAC,EAAa;QACnB,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;KACzC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAE,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAwBH,OAAO,EASL,WAAW,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAwBH,OAAO,EASL,WAAW,EAEZ,MAAM,aAAa,CAAC;AAiGrB,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAoChC,kFAAkF;AAClF,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AA+rED;;;GAGG;AACH,oHAAoH;AACpH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CA2C/D;AA6kDD,oHAAoH;AACpH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,EACtF,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,MAAkB,GAC1B,IAAI,CA6BN"}
|
package/dist/cli.js
CHANGED
|
@@ -31,7 +31,7 @@ import * as os from 'os';
|
|
|
31
31
|
import { fileURLToPath } from 'node:url';
|
|
32
32
|
import { execFileSync, execSync, spawn } from 'child_process';
|
|
33
33
|
import { installJsonHooks, uninstallJsonHooks, resolveJsonHookPaths, detectInstalledTools, defaultSleepLogPath, ensureCodexWrapperInstalled, installCodexWrapper, uninstallCodexWrapper, resolveCodexSessionTranscript, resolveCodexWrapperPaths, installOpencodePlugin, uninstallOpencodePlugin, resolveOpencodePluginPath, } from './hooks.js';
|
|
34
|
-
import { createMemory, calculateStrength, calculateRewardFactor, deriveHalfLife, resolveConfidence, computeSchemaFit, Layer,
|
|
34
|
+
import { createMemory, calculateStrength, calculateRewardFactor, deriveHalfLife, resolveConfidence, computeSchemaFit, Layer, } from './memory.js';
|
|
35
35
|
import { getHippoRoot, isInitialized, initStore, writeEntry, readEntry, deleteEntry, loadAllEntries, loadSearchEntries, loadIndex, saveIndex, loadStats, updateStats, saveActiveTaskSnapshot, loadActiveTaskSnapshot, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, listMemoryConflicts, resolveConflict, saveSessionHandoff, loadLatestHandoff, loadHandoffById, RECALL_DEFAULT_DENY_SCOPES, } from './store.js';
|
|
36
36
|
import { markRetrieved, hybridSearch, physicsSearch, explainMatch, textOverlap } from './search.js';
|
|
37
37
|
import { renderTraceContent, parseSteps } from './trace.js';
|
|
@@ -58,6 +58,7 @@ import { buildCorrectionLatency } from './correction-latency.js';
|
|
|
58
58
|
import * as api from './api.js';
|
|
59
59
|
import * as predictionsModule from './predictions.js';
|
|
60
60
|
import { computePlanningFallacyOutput } from './predictions.js';
|
|
61
|
+
import * as decisionsModule from './decisions.js';
|
|
61
62
|
import { createHash } from 'node:crypto';
|
|
62
63
|
import { detectAnchoring, hashQueryText, buildSessionKey, getOrCreateRing, appendRecall, snapshotRing, } from './recall-history.js';
|
|
63
64
|
import { detectAvailabilityBias } from './availability.js';
|
|
@@ -3302,6 +3303,166 @@ function cmdPredict(hippoRoot, args, flags) {
|
|
|
3302
3303
|
if (created.memoryId)
|
|
3303
3304
|
console.log(` memory: ${created.memoryId}`);
|
|
3304
3305
|
}
|
|
3306
|
+
function cmdDecide(hippoRoot, args, flags) {
|
|
3307
|
+
requireInit(hippoRoot);
|
|
3308
|
+
const tenantId = resolveTenantId({});
|
|
3309
|
+
const subcommand = args[0] ?? '';
|
|
3310
|
+
if (subcommand === 'list') {
|
|
3311
|
+
const statusRaw = flags['status'];
|
|
3312
|
+
const status = typeof statusRaw === 'string' ? statusRaw.trim() : 'all';
|
|
3313
|
+
const limitRaw = flags['limit'];
|
|
3314
|
+
const limit = limitRaw !== undefined ? parseInt(String(limitRaw), 10) : 100;
|
|
3315
|
+
if (!Number.isFinite(limit) || limit <= 0) {
|
|
3316
|
+
console.error(`Invalid --limit: "${limitRaw}". Must be a positive integer.`);
|
|
3317
|
+
process.exit(1);
|
|
3318
|
+
}
|
|
3319
|
+
let results;
|
|
3320
|
+
if (status === 'all') {
|
|
3321
|
+
results = decisionsModule.loadDecisions(hippoRoot, tenantId, { limit });
|
|
3322
|
+
}
|
|
3323
|
+
else {
|
|
3324
|
+
if (!decisionsModule.VALID_DECISION_STATES.has(status)) {
|
|
3325
|
+
console.error(`Invalid --status: "${status}". Must be one of: active | superseded | closed | all.`);
|
|
3326
|
+
process.exit(1);
|
|
3327
|
+
}
|
|
3328
|
+
results = decisionsModule.loadDecisions(hippoRoot, tenantId, {
|
|
3329
|
+
status: status,
|
|
3330
|
+
limit,
|
|
3331
|
+
});
|
|
3332
|
+
}
|
|
3333
|
+
if (results.length === 0) {
|
|
3334
|
+
console.log('No decisions.');
|
|
3335
|
+
return;
|
|
3336
|
+
}
|
|
3337
|
+
console.log(`Found ${results.length} decisions:\n`);
|
|
3338
|
+
for (const d of results) {
|
|
3339
|
+
const supPart = d.supersededBy !== null ? ` superseded_by=#${d.supersededBy}` : '';
|
|
3340
|
+
console.log(`#${d.id} [${d.status}]${supPart} memory=${d.memoryId ?? '-'}`);
|
|
3341
|
+
console.log(` ${d.decisionText}`);
|
|
3342
|
+
if (d.context)
|
|
3343
|
+
console.log(` context: ${d.context}`);
|
|
3344
|
+
}
|
|
3345
|
+
return;
|
|
3346
|
+
}
|
|
3347
|
+
if (subcommand === 'get') {
|
|
3348
|
+
const idRaw = args[1];
|
|
3349
|
+
if (!idRaw) {
|
|
3350
|
+
console.error('Usage: hippo decide get <id>');
|
|
3351
|
+
process.exit(1);
|
|
3352
|
+
}
|
|
3353
|
+
const id = parseInt(String(idRaw), 10);
|
|
3354
|
+
if (!Number.isFinite(id) || id <= 0) {
|
|
3355
|
+
console.error(`Invalid decision id: "${idRaw}"`);
|
|
3356
|
+
process.exit(1);
|
|
3357
|
+
}
|
|
3358
|
+
const decision = decisionsModule.loadDecisionById(hippoRoot, tenantId, id);
|
|
3359
|
+
if (!decision) {
|
|
3360
|
+
console.error(`Decision ${id} not found.`);
|
|
3361
|
+
process.exit(1);
|
|
3362
|
+
}
|
|
3363
|
+
console.log(`Decision #${decision.id}`);
|
|
3364
|
+
console.log(` status: ${decision.status}`);
|
|
3365
|
+
console.log(` text: ${decision.decisionText}`);
|
|
3366
|
+
if (decision.context)
|
|
3367
|
+
console.log(` context: ${decision.context}`);
|
|
3368
|
+
if (decision.supersededBy !== null)
|
|
3369
|
+
console.log(` superseded_by: #${decision.supersededBy}`);
|
|
3370
|
+
if (decision.supersededAt)
|
|
3371
|
+
console.log(` superseded_at: ${decision.supersededAt}`);
|
|
3372
|
+
if (decision.closedAt)
|
|
3373
|
+
console.log(` closed_at: ${decision.closedAt}`);
|
|
3374
|
+
if (decision.memoryId)
|
|
3375
|
+
console.log(` memory: ${decision.memoryId}`);
|
|
3376
|
+
console.log(` created: ${decision.createdAt}`);
|
|
3377
|
+
return;
|
|
3378
|
+
}
|
|
3379
|
+
if (subcommand === 'close') {
|
|
3380
|
+
const idRaw = args[1];
|
|
3381
|
+
if (!idRaw) {
|
|
3382
|
+
console.error('Usage: hippo decide close <id>');
|
|
3383
|
+
process.exit(1);
|
|
3384
|
+
}
|
|
3385
|
+
const id = parseInt(String(idRaw), 10);
|
|
3386
|
+
if (!Number.isFinite(id) || id <= 0) {
|
|
3387
|
+
console.error(`Invalid decision id: "${idRaw}"`);
|
|
3388
|
+
process.exit(1);
|
|
3389
|
+
}
|
|
3390
|
+
const closed = decisionsModule.closeDecision(hippoRoot, tenantId, id);
|
|
3391
|
+
console.log(`Decision #${closed.id} closed.`);
|
|
3392
|
+
return;
|
|
3393
|
+
}
|
|
3394
|
+
// Default subcommand: create. args[0] is the decision text.
|
|
3395
|
+
const decisionText = subcommand;
|
|
3396
|
+
if (!decisionText) {
|
|
3397
|
+
console.error('Usage: hippo decide "<decision>" [--context "<why>"] [--supersedes <memory-id>]');
|
|
3398
|
+
console.error(' hippo decide list [--status active|superseded|closed|all] [--limit N]');
|
|
3399
|
+
console.error(' hippo decide get <id>');
|
|
3400
|
+
console.error(' hippo decide close <id>');
|
|
3401
|
+
process.exit(1);
|
|
3402
|
+
}
|
|
3403
|
+
const contextRaw = flags['context'];
|
|
3404
|
+
const context = typeof contextRaw === 'string' && contextRaw ? contextRaw : undefined;
|
|
3405
|
+
// A value-less `--supersedes` (parseArgs stores boolean true) is a malformed
|
|
3406
|
+
// request: the user asked to supersede but gave no memory id. Reject it rather
|
|
3407
|
+
// than silently creating a non-superseding decision (codex review 2026-05-28).
|
|
3408
|
+
if (flags['supersedes'] === true) {
|
|
3409
|
+
console.error('--supersedes requires a memory id, e.g. hippo decide "<text>" --supersedes mem_abc123.');
|
|
3410
|
+
process.exit(1);
|
|
3411
|
+
}
|
|
3412
|
+
const supersedesMemId = typeof flags['supersedes'] === 'string' ? flags['supersedes'] : null;
|
|
3413
|
+
// Backward-compat: --supersedes takes a MEMORY id. Validate it exists and
|
|
3414
|
+
// resolve it to the active decision row (if any). Grill fix: commit the
|
|
3415
|
+
// canonical table create+supersede FIRST (inside saveDecision's SAVEPOINT),
|
|
3416
|
+
// weaken the old memory LAST (best-effort) so a memory-write failure cannot
|
|
3417
|
+
// leave the memory stale without the table reflecting the supersession.
|
|
3418
|
+
let supersedesDecisionId;
|
|
3419
|
+
let oldEntry = null;
|
|
3420
|
+
if (supersedesMemId) {
|
|
3421
|
+
oldEntry = readEntry(hippoRoot, supersedesMemId, tenantId) ?? null;
|
|
3422
|
+
if (!oldEntry) {
|
|
3423
|
+
console.error(`Memory ${supersedesMemId} not found.`);
|
|
3424
|
+
process.exit(1);
|
|
3425
|
+
}
|
|
3426
|
+
supersedesDecisionId =
|
|
3427
|
+
decisionsModule.resolveActiveDecisionIdByMemory(hippoRoot, tenantId, supersedesMemId) ?? undefined;
|
|
3428
|
+
}
|
|
3429
|
+
const decisionPathTags = extractPathTags(process.cwd());
|
|
3430
|
+
const created = decisionsModule.saveDecision(hippoRoot, tenantId, {
|
|
3431
|
+
decisionText,
|
|
3432
|
+
context,
|
|
3433
|
+
supersedesDecisionId,
|
|
3434
|
+
extraTags: decisionPathTags,
|
|
3435
|
+
});
|
|
3436
|
+
// Legacy memory-weaken (best-effort, LAST): half-life halved, marked stale +
|
|
3437
|
+
// 'superseded' tag. Preserves the exact pre-promotion behavior for the memory
|
|
3438
|
+
// mirror; the canonical table supersession already committed above.
|
|
3439
|
+
if (oldEntry) {
|
|
3440
|
+
// Best-effort: saveDecision already committed the canonical mutation (new
|
|
3441
|
+
// decision created + old row superseded). If this legacy memory-weaken
|
|
3442
|
+
// throws, do NOT fail the command — a retry would find no active decision
|
|
3443
|
+
// for the old memory and create a duplicate active successor. Warn instead
|
|
3444
|
+
// (codex review 2026-05-28).
|
|
3445
|
+
try {
|
|
3446
|
+
oldEntry.half_life_days = Math.max(1, Math.floor(oldEntry.half_life_days / 2));
|
|
3447
|
+
oldEntry.confidence = 'stale';
|
|
3448
|
+
if (!oldEntry.tags.includes('superseded'))
|
|
3449
|
+
oldEntry.tags.push('superseded');
|
|
3450
|
+
writeEntry(hippoRoot, oldEntry);
|
|
3451
|
+
}
|
|
3452
|
+
catch (e) {
|
|
3453
|
+
console.error(` warning: decision recorded and superseded, but failed to weaken the prior memory ${supersedesMemId}: ${e.message}`);
|
|
3454
|
+
}
|
|
3455
|
+
}
|
|
3456
|
+
console.log(`Decision recorded: #${created.id}`);
|
|
3457
|
+
if (created.memoryId)
|
|
3458
|
+
console.log(` memory: ${created.memoryId}`);
|
|
3459
|
+
if (supersedesMemId) {
|
|
3460
|
+
const tail = supersedesDecisionId !== undefined
|
|
3461
|
+
? ` (decision #${supersedesDecisionId} superseded)`
|
|
3462
|
+
: ' (no active decision row; memory weakened only)';
|
|
3463
|
+
console.log(` supersedes memory: ${supersedesMemId}${tail}`);
|
|
3464
|
+
}
|
|
3465
|
+
}
|
|
3305
3466
|
function cmdCurrent(hippoRoot, args, flags) {
|
|
3306
3467
|
requireInit(hippoRoot);
|
|
3307
3468
|
const subcommand = args[0] ?? 'show';
|
|
@@ -4716,6 +4877,9 @@ const VALID_AUDIT_OPS = new Set([
|
|
|
4716
4877
|
'recall_anchor_detected_memory_dominance', // v0.33 / J1 — emitted by detector on R2 fire
|
|
4717
4878
|
'recall_anchor_skipped_no_session', // v0.33 / J1 — telemetry: no sessionId, ring skipped
|
|
4718
4879
|
'recall_availability_detected', // v1.13.x / J2 - emitted when availability/recency-bias hint fires
|
|
4880
|
+
'decision_create', // E2 decision first-class object — emitted by saveDecision
|
|
4881
|
+
'decision_supersede', // E2 — emitted by saveDecision when --supersedes resolves to an active decision row
|
|
4882
|
+
'decision_close', // E2 — emitted by closeDecision
|
|
4719
4883
|
]);
|
|
4720
4884
|
function formatAuditRow(ev) {
|
|
4721
4885
|
const target = ev.targetId ?? '-';
|
|
@@ -5502,9 +5666,13 @@ Commands:
|
|
|
5502
5666
|
claude-code/opencode install SessionEnd+SessionStart;
|
|
5503
5667
|
codex wraps the detected launcher in place
|
|
5504
5668
|
hook uninstall <target> Remove hook
|
|
5505
|
-
decide "<decision>" Record
|
|
5669
|
+
decide "<decision>" Record a decision (first-class object + memory mirror)
|
|
5506
5670
|
--context "<why>" Why this decision was made
|
|
5507
|
-
--supersedes <id>
|
|
5671
|
+
--supersedes <mem-id> Supersede the decision backed by this memory id
|
|
5672
|
+
decide list [--status active|superseded|closed|all] [--limit N]
|
|
5673
|
+
List decisions (table is authoritative, survives decay)
|
|
5674
|
+
decide get <id> Show a decision by its table id
|
|
5675
|
+
decide close <id> Retire (close) an active decision by its table id
|
|
5508
5676
|
invalidate "<pattern>" Actively weaken memories matching an old pattern
|
|
5509
5677
|
--reason "<why>" Optional: what replaced it
|
|
5510
5678
|
wm <sub> Working memory — bounded buffer for current state
|
|
@@ -6189,52 +6357,9 @@ async function main() {
|
|
|
6189
6357
|
}
|
|
6190
6358
|
break;
|
|
6191
6359
|
}
|
|
6192
|
-
case 'decide':
|
|
6193
|
-
|
|
6194
|
-
const text = args[0];
|
|
6195
|
-
if (!text) {
|
|
6196
|
-
console.error('Usage: hippo decide "<decision>" [--context "<why>"] [--supersedes <id>]');
|
|
6197
|
-
process.exit(1);
|
|
6198
|
-
}
|
|
6199
|
-
const context = flags['context'] || '';
|
|
6200
|
-
const supersedesId = flags['supersedes'] || null;
|
|
6201
|
-
// Build content with context
|
|
6202
|
-
const decisionContent = context ? `${text}\n\nContext: ${context}` : text;
|
|
6203
|
-
// Handle supersession
|
|
6204
|
-
if (supersedesId) {
|
|
6205
|
-
const oldEntry = readEntry(hippoRoot, supersedesId, resolveTenantId({}));
|
|
6206
|
-
if (!oldEntry) {
|
|
6207
|
-
console.error(`Memory ${supersedesId} not found.`);
|
|
6208
|
-
process.exit(1);
|
|
6209
|
-
}
|
|
6210
|
-
oldEntry.half_life_days = Math.max(1, Math.floor(oldEntry.half_life_days / 2));
|
|
6211
|
-
oldEntry.confidence = 'stale';
|
|
6212
|
-
if (!oldEntry.tags.includes('superseded'))
|
|
6213
|
-
oldEntry.tags.push('superseded');
|
|
6214
|
-
writeEntry(hippoRoot, oldEntry);
|
|
6215
|
-
console.log(`Superseded ${supersedesId} (half-life halved, marked stale)`);
|
|
6216
|
-
}
|
|
6217
|
-
// Create decision memory
|
|
6218
|
-
const mem = createMemory(decisionContent, {
|
|
6219
|
-
tags: ['decision'],
|
|
6220
|
-
layer: Layer.Semantic,
|
|
6221
|
-
confidence: 'verified',
|
|
6222
|
-
source: 'decision',
|
|
6223
|
-
});
|
|
6224
|
-
mem.half_life_days = DECISION_HALF_LIFE_DAYS;
|
|
6225
|
-
// Auto-tag with path context
|
|
6226
|
-
const decisionPathTags = extractPathTags(process.cwd());
|
|
6227
|
-
for (const pt of decisionPathTags) {
|
|
6228
|
-
if (!mem.tags.includes(pt))
|
|
6229
|
-
mem.tags.push(pt);
|
|
6230
|
-
}
|
|
6231
|
-
writeEntry(hippoRoot, mem);
|
|
6232
|
-
console.log(`Decision recorded: ${mem.id}`);
|
|
6233
|
-
if (supersedesId) {
|
|
6234
|
-
console.log(` Supersedes: ${supersedesId}`);
|
|
6235
|
-
}
|
|
6360
|
+
case 'decide':
|
|
6361
|
+
cmdDecide(hippoRoot, args, flags);
|
|
6236
6362
|
break;
|
|
6237
|
-
}
|
|
6238
6363
|
case 'help':
|
|
6239
6364
|
case '--help':
|
|
6240
6365
|
case '-h':
|