@polpo-ai/core 0.15.41 → 0.15.42

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.
Files changed (108) hide show
  1. package/README.md +47 -0
  2. package/dist/__tests__/memory-store-policy.test.d.ts +2 -0
  3. package/dist/__tests__/memory-store-policy.test.d.ts.map +1 -0
  4. package/dist/__tests__/memory-store-policy.test.js +141 -0
  5. package/dist/__tests__/memory-store-policy.test.js.map +1 -0
  6. package/dist/__tests__/typed-memory.test.d.ts +2 -0
  7. package/dist/__tests__/typed-memory.test.d.ts.map +1 -0
  8. package/dist/__tests__/typed-memory.test.js +226 -0
  9. package/dist/__tests__/typed-memory.test.js.map +1 -0
  10. package/dist/adapter.d.ts +3 -0
  11. package/dist/adapter.d.ts.map +1 -1
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/memory/compatibility.d.ts +3 -0
  17. package/dist/memory/compatibility.d.ts.map +1 -0
  18. package/dist/memory/compatibility.js +27 -0
  19. package/dist/memory/compatibility.js.map +1 -0
  20. package/dist/memory/dedupe.d.ts +4 -0
  21. package/dist/memory/dedupe.d.ts.map +1 -0
  22. package/dist/memory/dedupe.js +21 -0
  23. package/dist/memory/dedupe.js.map +1 -0
  24. package/dist/memory/errors.d.ts +7 -0
  25. package/dist/memory/errors.d.ts.map +1 -0
  26. package/dist/memory/errors.js +11 -0
  27. package/dist/memory/errors.js.map +1 -0
  28. package/dist/memory/extraction.d.ts +124 -0
  29. package/dist/memory/extraction.d.ts.map +1 -0
  30. package/dist/memory/extraction.js +450 -0
  31. package/dist/memory/extraction.js.map +1 -0
  32. package/dist/memory/extraction.test.d.ts +2 -0
  33. package/dist/memory/extraction.test.d.ts.map +1 -0
  34. package/dist/memory/extraction.test.js +366 -0
  35. package/dist/memory/extraction.test.js.map +1 -0
  36. package/dist/memory/in-memory-extraction-store.d.ts +30 -0
  37. package/dist/memory/in-memory-extraction-store.d.ts.map +1 -0
  38. package/dist/memory/in-memory-extraction-store.js +363 -0
  39. package/dist/memory/in-memory-extraction-store.js.map +1 -0
  40. package/dist/memory/in-memory-store.d.ts +24 -0
  41. package/dist/memory/in-memory-store.d.ts.map +1 -0
  42. package/dist/memory/in-memory-store.js +380 -0
  43. package/dist/memory/in-memory-store.js.map +1 -0
  44. package/dist/memory/index.d.ts +20 -0
  45. package/dist/memory/index.d.ts.map +1 -0
  46. package/dist/memory/index.js +14 -0
  47. package/dist/memory/index.js.map +1 -0
  48. package/dist/memory/item.d.ts +6 -0
  49. package/dist/memory/item.d.ts.map +1 -0
  50. package/dist/memory/item.js +169 -0
  51. package/dist/memory/item.js.map +1 -0
  52. package/dist/memory/lifecycle.d.ts +5 -0
  53. package/dist/memory/lifecycle.d.ts.map +1 -0
  54. package/dist/memory/lifecycle.js +32 -0
  55. package/dist/memory/lifecycle.js.map +1 -0
  56. package/dist/memory/policy.d.ts +27 -0
  57. package/dist/memory/policy.d.ts.map +1 -0
  58. package/dist/memory/policy.js +114 -0
  59. package/dist/memory/policy.js.map +1 -0
  60. package/dist/memory/ranking.d.ts +9 -0
  61. package/dist/memory/ranking.d.ts.map +1 -0
  62. package/dist/memory/ranking.js +65 -0
  63. package/dist/memory/ranking.js.map +1 -0
  64. package/dist/memory/scope.d.ts +5 -0
  65. package/dist/memory/scope.d.ts.map +1 -0
  66. package/dist/memory/scope.js +68 -0
  67. package/dist/memory/scope.js.map +1 -0
  68. package/dist/memory/store-errors.d.ts +10 -0
  69. package/dist/memory/store-errors.d.ts.map +1 -0
  70. package/dist/memory/store-errors.js +19 -0
  71. package/dist/memory/store-errors.js.map +1 -0
  72. package/dist/memory/store-types.d.ts +81 -0
  73. package/dist/memory/store-types.d.ts.map +1 -0
  74. package/dist/memory/store-types.js +2 -0
  75. package/dist/memory/store-types.js.map +1 -0
  76. package/dist/memory/types.d.ts +70 -0
  77. package/dist/memory/types.d.ts.map +1 -0
  78. package/dist/memory/types.js +32 -0
  79. package/dist/memory/types.js.map +1 -0
  80. package/dist/orchestrator-context.d.ts +6 -0
  81. package/dist/orchestrator-context.d.ts.map +1 -1
  82. package/dist/runtime-context/index.d.ts +5 -0
  83. package/dist/runtime-context/index.d.ts.map +1 -0
  84. package/dist/runtime-context/index.js +4 -0
  85. package/dist/runtime-context/index.js.map +1 -0
  86. package/dist/runtime-context/memory-retriever.d.ts +14 -0
  87. package/dist/runtime-context/memory-retriever.d.ts.map +1 -0
  88. package/dist/runtime-context/memory-retriever.js +76 -0
  89. package/dist/runtime-context/memory-retriever.js.map +1 -0
  90. package/dist/runtime-context/runtime-context.d.ts +4 -0
  91. package/dist/runtime-context/runtime-context.d.ts.map +1 -0
  92. package/dist/runtime-context/runtime-context.js +311 -0
  93. package/dist/runtime-context/runtime-context.js.map +1 -0
  94. package/dist/runtime-context/runtime-context.test.d.ts +2 -0
  95. package/dist/runtime-context/runtime-context.test.d.ts.map +1 -0
  96. package/dist/runtime-context/runtime-context.test.js +282 -0
  97. package/dist/runtime-context/runtime-context.test.js.map +1 -0
  98. package/dist/runtime-context/types.d.ts +75 -0
  99. package/dist/runtime-context/types.d.ts.map +1 -0
  100. package/dist/runtime-context/types.js +8 -0
  101. package/dist/runtime-context/types.js.map +1 -0
  102. package/dist/task-runner.d.ts.map +1 -1
  103. package/dist/task-runner.js +16 -0
  104. package/dist/task-runner.js.map +1 -1
  105. package/dist/types/config.d.ts +6 -0
  106. package/dist/types/config.d.ts.map +1 -1
  107. package/dist/types/config.js.map +1 -1
  108. package/package.json +9 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/memory/item.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { MemoryItem, MemoryStatus } from "./types.js";
2
+ export declare function assertMemoryStatusTransition(from: MemoryStatus, to: MemoryStatus): void;
3
+ export declare function isMemoryItemExpired(item: Pick<MemoryItem, "expiresAt">, now?: Date | string): boolean;
4
+ export declare function isMemoryItemRetrievable(item: Pick<MemoryItem, "status" | "expiresAt">, now?: Date | string): boolean;
5
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/memory/lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS3D,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,GACf,IAAI,CAQN;AAcD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EACnC,GAAG,GAAE,IAAI,GAAG,MAAmB,GAC9B,OAAO,CAWT;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAC,EAC9C,GAAG,GAAE,IAAI,GAAG,MAAmB,GAC9B,OAAO,CAET"}
@@ -0,0 +1,32 @@
1
+ import { MemoryContractError } from "./errors.js";
2
+ const allowedTransitions = {
3
+ pending: new Set(["pending", "active", "deleted"]),
4
+ active: new Set(["active", "superseded", "deleted"]),
5
+ superseded: new Set(["superseded", "deleted"]),
6
+ deleted: new Set(["deleted"]),
7
+ };
8
+ export function assertMemoryStatusTransition(from, to) {
9
+ if (!allowedTransitions[from]?.has(to)) {
10
+ throw new MemoryContractError(`Invalid Memory status transition: ${String(from)} -> ${String(to)}`, "invalid_transition", "status");
11
+ }
12
+ }
13
+ function timestamp(value) {
14
+ const time = value instanceof Date ? value.getTime() : Date.parse(value);
15
+ if (!Number.isFinite(time)) {
16
+ throw new MemoryContractError("Memory comparison time must be a valid date", "invalid_item", "now");
17
+ }
18
+ return time;
19
+ }
20
+ export function isMemoryItemExpired(item, now = new Date()) {
21
+ if (!item.expiresAt)
22
+ return false;
23
+ const expiresAt = Date.parse(item.expiresAt);
24
+ if (!Number.isFinite(expiresAt)) {
25
+ throw new MemoryContractError("Memory expiresAt must be a valid date", "invalid_item", "expiresAt");
26
+ }
27
+ return expiresAt <= timestamp(now);
28
+ }
29
+ export function isMemoryItemRetrievable(item, now = new Date()) {
30
+ return item.status === "active" && !isMemoryItemExpired(item, now);
31
+ }
32
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/memory/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,kBAAkB,GAA8D;IACpF,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACpD,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC9C,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAC1C,IAAkB,EAClB,EAAgB;IAEhB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,mBAAmB,CAC3B,qCAAqC,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,EACpE,oBAAoB,EACpB,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAoB;IACrC,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,mBAAmB,CAC3B,6CAA6C,EAC7C,cAAc,EACd,KAAK,CACN,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAmC,EACnC,MAAqB,IAAI,IAAI,EAAE;IAE/B,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,mBAAmB,CAC3B,uCAAuC,EACvC,cAAc,EACd,WAAW,CACZ,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAA8C,EAC9C,MAAqB,IAAI,IAAI,EAAE;IAE/B,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { MemoryItem, MemoryKind, MemoryScopeKind } from "./types.js";
2
+ import type { MemoryStoreContext } from "./store-types.js";
3
+ export interface MemorySensitiveContentFinding {
4
+ readonly code: string;
5
+ readonly start: number;
6
+ readonly length: number;
7
+ }
8
+ export type MemorySensitiveContentHook = (content: string) => readonly MemorySensitiveContentFinding[] | Promise<readonly MemorySensitiveContentFinding[]>;
9
+ export interface MemoryWritePolicy {
10
+ readonly allowedScopeKinds?: readonly MemoryScopeKind[];
11
+ readonly allowedKinds?: readonly MemoryKind[];
12
+ readonly allowSensitiveContent?: boolean;
13
+ readonly allowPublicChannelBroadScopeWrites?: boolean;
14
+ readonly sensitiveContentHook?: MemorySensitiveContentHook;
15
+ }
16
+ export interface MemoryPolicyViolation {
17
+ readonly code: "unauthorized_scope" | "scope_kind_denied" | "memory_kind_denied" | "public_channel_broad_scope" | "sensitive_content";
18
+ readonly message: string;
19
+ readonly findingCodes?: readonly string[];
20
+ }
21
+ export interface MemoryWriteDecision {
22
+ readonly allowed: boolean;
23
+ readonly violations: readonly MemoryPolicyViolation[];
24
+ }
25
+ export declare function detectSensitiveMemoryContent(content: string): MemorySensitiveContentFinding[];
26
+ export declare function evaluateMemoryWrite(item: MemoryItem, context: MemoryStoreContext, policy?: MemoryWritePolicy): Promise<MemoryWriteDecision>;
27
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/memory/policy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,0BAA0B,GAAG,CACvC,OAAO,EAAE,MAAM,KAEb,SAAS,6BAA6B,EAAE,GACxC,OAAO,CAAC,SAAS,6BAA6B,EAAE,CAAC,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,kCAAkC,CAAC,EAAE,OAAO,CAAC;IACtD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CAC5D;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EACT,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,4BAA4B,GAC5B,mBAAmB,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACvD;AAgDD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,GACd,6BAA6B,EAAE,CAejC;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,GAAE,iBAAsB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CAqE9B"}
@@ -0,0 +1,114 @@
1
+ import { canAccessMemoryScope } from "./scope.js";
2
+ import { MemoryPolicyError } from "./store-errors.js";
3
+ const SENSITIVE_PATTERNS = [
4
+ {
5
+ code: "private_key",
6
+ expression: /-----BEGIN (?:[A-Z0-9 ]+ )?PRIVATE KEY-----/gu,
7
+ },
8
+ {
9
+ code: "bearer_token",
10
+ expression: /\bBearer\s+[A-Za-z0-9._~+/=-]{16,}/giu,
11
+ },
12
+ {
13
+ code: "credential_assignment",
14
+ expression: /\b(?:api[_-]?key|access[_-]?token|password|secret|client[_-]?secret)\s*[:=]\s*["']?[^\s"',;]{12,}/giu,
15
+ },
16
+ {
17
+ code: "known_token_prefix",
18
+ expression: /\b(?:sk[-_]|ghp_|github_pat_|xox[baprs]-|AKIA)[A-Za-z0-9_=-]{16,}\b/gu,
19
+ },
20
+ ];
21
+ const BROAD_SCOPE_KINDS = new Set([
22
+ "org",
23
+ "project",
24
+ "agent",
25
+ ]);
26
+ function normalizeFinding(finding) {
27
+ const code = typeof finding.code === "string"
28
+ && /^[a-z0-9][a-z0-9_-]{0,63}$/u.test(finding.code)
29
+ ? finding.code
30
+ : "custom_sensitive_content";
31
+ const start = Number.isInteger(finding.start) && finding.start >= 0
32
+ ? finding.start
33
+ : 0;
34
+ const length = Number.isInteger(finding.length) && finding.length >= 0
35
+ ? finding.length
36
+ : 0;
37
+ return Object.freeze({ code, start, length });
38
+ }
39
+ export function detectSensitiveMemoryContent(content) {
40
+ const findings = [];
41
+ for (const pattern of SENSITIVE_PATTERNS) {
42
+ for (const match of content.matchAll(pattern.expression)) {
43
+ findings.push(Object.freeze({
44
+ code: pattern.code,
45
+ start: match.index,
46
+ length: match[0].length,
47
+ }));
48
+ }
49
+ }
50
+ return findings.sort((left, right) => (left.start - right.start
51
+ || left.code.localeCompare(right.code)));
52
+ }
53
+ export async function evaluateMemoryWrite(item, context, policy = {}) {
54
+ const violations = [];
55
+ if (!canAccessMemoryScope(item.scope, context.access)) {
56
+ violations.push({
57
+ code: "unauthorized_scope",
58
+ message: "The caller cannot write this Memory scope.",
59
+ });
60
+ }
61
+ if (policy.allowedScopeKinds
62
+ && !policy.allowedScopeKinds.includes(item.scope.kind)) {
63
+ violations.push({
64
+ code: "scope_kind_denied",
65
+ message: `Memory scope kind "${item.scope.kind}" is denied by policy.`,
66
+ });
67
+ }
68
+ if (policy.allowedKinds && !policy.allowedKinds.includes(item.kind)) {
69
+ violations.push({
70
+ code: "memory_kind_denied",
71
+ message: `Memory kind "${item.kind}" is denied by policy.`,
72
+ });
73
+ }
74
+ if (context.surface === "channel"
75
+ && context.channelVisibility === "public"
76
+ && BROAD_SCOPE_KINDS.has(item.scope.kind)
77
+ && !policy.allowPublicChannelBroadScopeWrites) {
78
+ violations.push({
79
+ code: "public_channel_broad_scope",
80
+ message: "Public channels cannot write broad Memory scopes.",
81
+ });
82
+ }
83
+ if (!policy.allowSensitiveContent) {
84
+ const values = [
85
+ item.content,
86
+ ...(item.summary ? [item.summary] : []),
87
+ ];
88
+ const findings = [];
89
+ for (const value of values) {
90
+ findings.push(...detectSensitiveMemoryContent(value));
91
+ if (policy.sensitiveContentHook) {
92
+ try {
93
+ const custom = await policy.sensitiveContentHook(value);
94
+ findings.push(...custom.map(normalizeFinding));
95
+ }
96
+ catch (error) {
97
+ throw new MemoryPolicyError("Memory sensitive-content policy failed closed", { cause: error });
98
+ }
99
+ }
100
+ }
101
+ if (findings.length > 0) {
102
+ violations.push({
103
+ code: "sensitive_content",
104
+ message: "Memory content contains sensitive credential material.",
105
+ findingCodes: [...new Set(findings.map((finding) => finding.code))],
106
+ });
107
+ }
108
+ }
109
+ return Object.freeze({
110
+ allowed: violations.length === 0,
111
+ violations: Object.freeze(violations),
112
+ });
113
+ }
114
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/memory/policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { MemoryItem } from "./types.js";
2
+ import type { MemorySearchResult } from "./store-types.js";
3
+ export declare function estimateMemoryItemTokens(item: MemoryItem): number;
4
+ export declare function rankMemoryItems(items: readonly MemoryItem[], query: string): MemorySearchResult[];
5
+ export declare function selectMemoryResultsWithinBudget(results: readonly MemorySearchResult[], options: {
6
+ readonly tokenBudget: number;
7
+ readonly maxResults?: number;
8
+ }): MemorySearchResult[];
9
+ //# sourceMappingURL=ranking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranking.d.ts","sourceRoot":"","sources":["../../src/memory/ranking.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAa3D,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAGjE;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,KAAK,EAAE,MAAM,GACZ,kBAAkB,EAAE,CAqCtB;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,SAAS,kBAAkB,EAAE,EACtC,OAAO,EAAE;IACP,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,GACA,kBAAkB,EAAE,CA6BtB"}
@@ -0,0 +1,65 @@
1
+ import { MemoryContractError } from "./errors.js";
2
+ const TOKEN_PATTERN = /[\p{L}\p{N}]+/gu;
3
+ function terms(value) {
4
+ return [
5
+ ...new Set((value.normalize("NFKC").toLowerCase().match(TOKEN_PATTERN) ?? [])
6
+ .filter(Boolean)),
7
+ ];
8
+ }
9
+ export function estimateMemoryItemTokens(item) {
10
+ const characters = item.content.length + (item.summary?.length ?? 0);
11
+ return Math.max(1, Math.ceil(characters / 4));
12
+ }
13
+ export function rankMemoryItems(items, query) {
14
+ const queryTerms = terms(query);
15
+ if (queryTerms.length === 0) {
16
+ throw new MemoryContractError("Memory search query must contain searchable terms", "invalid_item", "query");
17
+ }
18
+ const normalizedQuery = query.normalize("NFKC").trim().toLowerCase();
19
+ return items
20
+ .map((item) => {
21
+ const searchable = `${item.summary ?? ""}\n${item.content}`
22
+ .normalize("NFKC")
23
+ .toLowerCase();
24
+ const searchableTerms = new Set(terms(searchable));
25
+ const matchedTerms = queryTerms.filter((term) => searchableTerms.has(term));
26
+ if (matchedTerms.length === 0)
27
+ return undefined;
28
+ const coverage = matchedTerms.length / queryTerms.length;
29
+ const density = matchedTerms.length / Math.max(1, searchableTerms.size);
30
+ const exactPhrase = searchable.includes(normalizedQuery) ? 1 : 0;
31
+ const score = exactPhrase * 2 + coverage + density;
32
+ return Object.freeze({
33
+ item,
34
+ score,
35
+ matchedTerms: Object.freeze(matchedTerms),
36
+ estimatedTokens: estimateMemoryItemTokens(item),
37
+ });
38
+ })
39
+ .filter((result) => result !== undefined)
40
+ .sort((left, right) => (right.score - left.score
41
+ || right.item.updatedAt.localeCompare(left.item.updatedAt)
42
+ || left.item.id.localeCompare(right.item.id)));
43
+ }
44
+ export function selectMemoryResultsWithinBudget(results, options) {
45
+ if (!Number.isInteger(options.tokenBudget)
46
+ || options.tokenBudget < 0) {
47
+ throw new MemoryContractError("Memory token budget must be a non-negative integer", "invalid_item", "tokenBudget");
48
+ }
49
+ const maxResults = options.maxResults ?? results.length;
50
+ if (!Number.isInteger(maxResults) || maxResults < 0) {
51
+ throw new MemoryContractError("Memory maxResults must be a non-negative integer", "invalid_item", "maxResults");
52
+ }
53
+ const selected = [];
54
+ let usedTokens = 0;
55
+ for (const result of results) {
56
+ if (selected.length >= maxResults)
57
+ break;
58
+ if (usedTokens + result.estimatedTokens > options.tokenBudget)
59
+ continue;
60
+ selected.push(result);
61
+ usedTokens += result.estimatedTokens;
62
+ }
63
+ return selected;
64
+ }
65
+ //# sourceMappingURL=ranking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranking.js","sourceRoot":"","sources":["../../src/memory/ranking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type MemoryScope, type MemoryScopeAccess } from "./types.js";
2
+ export declare function normalizeMemoryScope(value: unknown): MemoryScope;
3
+ export declare function memoryScopeKey(scope: MemoryScope): string;
4
+ export declare function canAccessMemoryScope(scope: MemoryScope, access: MemoryScopeAccess): boolean;
5
+ //# sourceMappingURL=scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/memory/scope.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAEvB,MAAM,YAAY,CAAC;AA6BpB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CA0ChE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAOzD;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAsBT"}
@@ -0,0 +1,68 @@
1
+ import { MemoryContractError } from "./errors.js";
2
+ import { MEMORY_SCOPE_KINDS, } from "./types.js";
3
+ const scopeKinds = new Set(MEMORY_SCOPE_KINDS);
4
+ const MAX_SCOPE_IDENTIFIER_CHARACTERS = 512;
5
+ const MAX_AGENT_NAME_CHARACTERS = 128;
6
+ function requiredIdentifier(value, path, max = MAX_SCOPE_IDENTIFIER_CHARACTERS) {
7
+ if (typeof value !== "string") {
8
+ throw new MemoryContractError(`${path} must be a non-empty string`, "invalid_scope", path);
9
+ }
10
+ const normalized = value.trim();
11
+ if (normalized.length === 0 || normalized.length > max) {
12
+ throw new MemoryContractError(`${path} must contain between 1 and ${max} characters`, "invalid_scope", path);
13
+ }
14
+ return normalized;
15
+ }
16
+ export function normalizeMemoryScope(value) {
17
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
18
+ throw new MemoryContractError("Memory scope must be an object", "invalid_scope", "scope");
19
+ }
20
+ const candidate = value;
21
+ if (typeof candidate.kind !== "string" || !scopeKinds.has(candidate.kind)) {
22
+ throw new MemoryContractError(`Unknown Memory scope kind: ${String(candidate.kind)}`, "invalid_scope", "scope.kind");
23
+ }
24
+ const kind = candidate.kind;
25
+ if (kind === "agent") {
26
+ return Object.freeze({
27
+ kind,
28
+ agentName: requiredIdentifier(candidate.agentName, "scope.agentName", MAX_AGENT_NAME_CHARACTERS),
29
+ });
30
+ }
31
+ const subjectId = requiredIdentifier(candidate.subjectId, "scope.subjectId");
32
+ if (kind === "user" && candidate.agentName !== undefined) {
33
+ return Object.freeze({
34
+ kind,
35
+ subjectId,
36
+ agentName: requiredIdentifier(candidate.agentName, "scope.agentName", MAX_AGENT_NAME_CHARACTERS),
37
+ });
38
+ }
39
+ return Object.freeze({ kind, subjectId });
40
+ }
41
+ export function memoryScopeKey(scope) {
42
+ const normalized = normalizeMemoryScope(scope);
43
+ return JSON.stringify([
44
+ normalized.kind,
45
+ normalized.subjectId ?? "",
46
+ normalized.agentName ?? "",
47
+ ]);
48
+ }
49
+ export function canAccessMemoryScope(scope, access) {
50
+ const normalized = normalizeMemoryScope(scope);
51
+ switch (normalized.kind) {
52
+ case "org":
53
+ return normalized.subjectId === access.orgId;
54
+ case "project":
55
+ return normalized.subjectId === access.projectId;
56
+ case "agent":
57
+ return normalized.agentName === access.agentName;
58
+ case "user":
59
+ return (normalized.subjectId === access.externalUserId
60
+ && (normalized.agentName === undefined
61
+ || normalized.agentName === access.agentName));
62
+ case "channel":
63
+ return normalized.subjectId === access.channelId;
64
+ case "session":
65
+ return normalized.subjectId === access.sessionId;
66
+ }
67
+ }
68
+ //# sourceMappingURL=scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/memory/scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare class MemoryAuthorizationError extends Error {
2
+ constructor(message?: string);
3
+ }
4
+ export declare class MemoryConflictError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare class MemoryPolicyError extends Error {
8
+ constructor(message: string, options?: ErrorOptions);
9
+ }
10
+ //# sourceMappingURL=store-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-errors.d.ts","sourceRoot":"","sources":["../../src/memory/store-errors.ts"],"names":[],"mappings":"AAAA,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,SAAmC;CAIvD;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD"}
@@ -0,0 +1,19 @@
1
+ export class MemoryAuthorizationError extends Error {
2
+ constructor(message = "Memory scope is not authorized") {
3
+ super(message);
4
+ this.name = "MemoryAuthorizationError";
5
+ }
6
+ }
7
+ export class MemoryConflictError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = "MemoryConflictError";
11
+ }
12
+ }
13
+ export class MemoryPolicyError extends Error {
14
+ constructor(message, options) {
15
+ super(message, options);
16
+ this.name = "MemoryPolicyError";
17
+ }
18
+ }
19
+ //# sourceMappingURL=store-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-errors.js","sourceRoot":"","sources":["../../src/memory/store-errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAO,GAAG,gCAAgC;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,81 @@
1
+ import type { MemoryDedupeInput, MemoryItem, MemoryKind, MemoryScope, MemoryScopeAccess, MemoryStatus } from "./types.js";
2
+ export type MemoryWriteSurface = "api" | "chat" | "task" | "loop" | "schedule" | "channel" | "system";
3
+ export interface MemoryStoreContext {
4
+ /** Host-owned hard isolation boundary, normally a project id. */
5
+ readonly namespace: string;
6
+ readonly access: MemoryScopeAccess;
7
+ readonly surface?: MemoryWriteSurface;
8
+ readonly channelVisibility?: "public" | "private";
9
+ readonly now?: Date | string;
10
+ }
11
+ export interface MemoryItemPatch {
12
+ readonly content?: string;
13
+ readonly summary?: string | null;
14
+ readonly confidence?: number | null;
15
+ readonly status?: MemoryStatus;
16
+ readonly expiresAt?: string | null;
17
+ }
18
+ export interface MemoryGetOptions {
19
+ readonly includeInactive?: boolean;
20
+ readonly includeExpired?: boolean;
21
+ readonly now?: Date | string;
22
+ }
23
+ export interface MemoryListQuery {
24
+ readonly kinds?: readonly MemoryKind[];
25
+ readonly statuses?: readonly MemoryStatus[];
26
+ readonly scope?: MemoryScope;
27
+ readonly includeExpired?: boolean;
28
+ readonly now?: Date | string;
29
+ readonly limit?: number;
30
+ }
31
+ export interface MemorySearchQuery {
32
+ readonly query: string;
33
+ readonly kinds?: readonly MemoryKind[];
34
+ readonly scope?: MemoryScope;
35
+ readonly tokenBudget?: number;
36
+ readonly maxResults?: number;
37
+ readonly now?: Date | string;
38
+ }
39
+ export interface MemorySearchResult {
40
+ readonly item: MemoryItem;
41
+ readonly score: number;
42
+ readonly matchedTerms: readonly string[];
43
+ readonly estimatedTokens: number;
44
+ }
45
+ export type MemoryUsageEventType = "retrieved" | "written" | "updated" | "superseded" | "forgotten";
46
+ export interface MemoryUsageEvent {
47
+ readonly id: string;
48
+ readonly memoryId: string;
49
+ readonly type: MemoryUsageEventType;
50
+ readonly at: string;
51
+ readonly runId?: string;
52
+ readonly sessionId?: string;
53
+ readonly requestId?: string;
54
+ }
55
+ export interface MemorySupersedeResult {
56
+ readonly superseded: MemoryItem;
57
+ readonly replacement: MemoryItem;
58
+ }
59
+ export interface MemoryItemStore {
60
+ create(item: MemoryItem, context: MemoryStoreContext): Promise<MemoryItem>;
61
+ get(id: string, context: MemoryStoreContext, options?: MemoryGetOptions): Promise<MemoryItem | undefined>;
62
+ list(query: MemoryListQuery, context: MemoryStoreContext): Promise<MemoryItem[]>;
63
+ update(id: string, patch: MemoryItemPatch, context: MemoryStoreContext): Promise<MemoryItem | undefined>;
64
+ supersede(id: string, replacement: MemoryItem, context: MemoryStoreContext): Promise<MemorySupersedeResult | undefined>;
65
+ forget(id: string, context: MemoryStoreContext): Promise<boolean>;
66
+ search(query: MemorySearchQuery, context: MemoryStoreContext): Promise<MemorySearchResult[]>;
67
+ findDedupeCandidate(input: MemoryDedupeInput, context: MemoryStoreContext): Promise<MemoryItem | undefined>;
68
+ appendUsage(event: MemoryUsageEvent, context: MemoryStoreContext): Promise<void>;
69
+ listUsage(memoryId: string, context: MemoryStoreContext): Promise<MemoryUsageEvent[]>;
70
+ close?(): Promise<void> | void;
71
+ }
72
+ export interface MemoryStoreSnapshotNamespace {
73
+ readonly namespace: string;
74
+ readonly items: readonly MemoryItem[];
75
+ readonly usage: readonly MemoryUsageEvent[];
76
+ }
77
+ export interface MemoryItemStoreSnapshot {
78
+ readonly version: 1;
79
+ readonly namespaces: readonly MemoryStoreSnapshotNamespace[];
80
+ }
81
+ //# sourceMappingURL=store-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-types.d.ts","sourceRoot":"","sources":["../../src/memory/store-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,kBAAkB,GAC1B,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,SAAS,GACT,SAAS,GACT,YAAY,GACZ,WAAW,CAAC;AAEhB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3E,GAAG,CACD,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IACnC,IAAI,CACF,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzB,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IACnC,SAAS,CACP,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,CACJ,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACjC,mBAAmB,CACjB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IACnC,WAAW,CACT,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC9D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=store-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-types.js","sourceRoot":"","sources":["../../src/memory/store-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
1
+ export declare const MEMORY_SCOPE_KINDS: readonly ["org", "project", "agent", "user", "channel", "session"];
2
+ export type MemoryScopeKind = (typeof MEMORY_SCOPE_KINDS)[number];
3
+ export interface MemoryScope {
4
+ readonly kind: MemoryScopeKind;
5
+ readonly subjectId?: string;
6
+ readonly agentName?: string;
7
+ }
8
+ export declare const MEMORY_KINDS: readonly ["fact", "preference", "open_thread", "style", "failure_pattern", "successful_episode", "procedure_hint"];
9
+ export type MemoryKind = (typeof MEMORY_KINDS)[number];
10
+ export declare const MEMORY_STATUSES: readonly ["pending", "active", "superseded", "deleted"];
11
+ export type MemoryStatus = (typeof MEMORY_STATUSES)[number];
12
+ export declare const MEMORY_PROVENANCE_SOURCES: readonly ["explicit", "run", "session", "tool", "import", "extraction"];
13
+ export type MemoryProvenanceSource = (typeof MEMORY_PROVENANCE_SOURCES)[number];
14
+ export type MemoryProvenanceActor = "user" | "agent" | "system";
15
+ export interface MemoryProvenance {
16
+ readonly source: MemoryProvenanceSource;
17
+ readonly actor?: MemoryProvenanceActor;
18
+ readonly sourceId?: string;
19
+ readonly runId?: string;
20
+ readonly sessionId?: string;
21
+ readonly messageId?: string;
22
+ readonly toolName?: string;
23
+ }
24
+ export interface MemoryItem {
25
+ readonly id: string;
26
+ readonly scope: MemoryScope;
27
+ readonly kind: MemoryKind;
28
+ readonly content: string;
29
+ readonly summary?: string;
30
+ readonly provenance: MemoryProvenance;
31
+ readonly confidence?: number;
32
+ readonly status: MemoryStatus;
33
+ readonly expiresAt?: string;
34
+ readonly createdAt: string;
35
+ readonly updatedAt: string;
36
+ }
37
+ export interface CreateMemoryItemInput {
38
+ readonly id?: string;
39
+ readonly scope: MemoryScope;
40
+ readonly kind: MemoryKind;
41
+ readonly content: string;
42
+ readonly summary?: string;
43
+ readonly provenance: MemoryProvenance;
44
+ readonly confidence?: number;
45
+ readonly status?: Extract<MemoryStatus, "pending" | "active">;
46
+ readonly expiresAt?: string;
47
+ }
48
+ export interface MemoryItemFactoryOptions {
49
+ readonly createId?: () => string;
50
+ readonly now?: () => Date | string;
51
+ }
52
+ export interface MemoryScopeAccess {
53
+ readonly orgId?: string;
54
+ readonly projectId?: string;
55
+ readonly agentName?: string;
56
+ /** Hosted application's end user, never the Polpo account/member id. */
57
+ readonly externalUserId?: string;
58
+ readonly channelId?: string;
59
+ readonly sessionId?: string;
60
+ }
61
+ export interface MemoryDedupeInput {
62
+ readonly scope: MemoryScope;
63
+ readonly kind: MemoryKind;
64
+ readonly content: string;
65
+ }
66
+ export interface RenderMemoryItemsOptions {
67
+ readonly now?: Date | string;
68
+ readonly includePending?: boolean;
69
+ }
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}