aismemory 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/auth-staleness.test.d.ts +9 -0
- package/dist/__tests__/auth-staleness.test.js +46 -0
- package/dist/__tests__/auth-staleness.test.js.map +1 -0
- package/dist/__tests__/auto-handoff.test.js +108 -2
- package/dist/__tests__/auto-handoff.test.js.map +1 -1
- package/dist/__tests__/config.test.js +6 -3
- package/dist/__tests__/config.test.js.map +1 -1
- package/dist/__tests__/env-agent.test.d.ts +1 -0
- package/dist/__tests__/env-agent.test.js +19 -0
- package/dist/__tests__/env-agent.test.js.map +1 -0
- package/dist/__tests__/existing-hashes.test.d.ts +1 -0
- package/dist/__tests__/existing-hashes.test.js +122 -0
- package/dist/__tests__/existing-hashes.test.js.map +1 -0
- package/dist/__tests__/hydration.test.js +38 -0
- package/dist/__tests__/hydration.test.js.map +1 -1
- package/dist/__tests__/local-mirror.test.js +4 -0
- package/dist/__tests__/local-mirror.test.js.map +1 -1
- package/dist/__tests__/oauth-credentials.test.d.ts +1 -0
- package/dist/__tests__/oauth-credentials.test.js +29 -0
- package/dist/__tests__/oauth-credentials.test.js.map +1 -0
- package/dist/__tests__/pipeline-ingestion.test.js +112 -1
- package/dist/__tests__/pipeline-ingestion.test.js.map +1 -1
- package/dist/__tests__/refresh.test.js +24 -0
- package/dist/__tests__/refresh.test.js.map +1 -1
- package/dist/__tests__/sync-memory-cli.test.d.ts +1 -0
- package/dist/__tests__/sync-memory-cli.test.js +200 -0
- package/dist/__tests__/sync-memory-cli.test.js.map +1 -0
- package/dist/__tests__/telemetry.test.d.ts +1 -0
- package/dist/__tests__/telemetry.test.js +67 -0
- package/dist/__tests__/telemetry.test.js.map +1 -0
- package/dist/__tests__/token-expiry-reauth.test.d.ts +1 -0
- package/dist/__tests__/token-expiry-reauth.test.js +201 -0
- package/dist/__tests__/token-expiry-reauth.test.js.map +1 -0
- package/dist/__tests__/tool-args.test.d.ts +1 -0
- package/dist/__tests__/tool-args.test.js +78 -0
- package/dist/__tests__/tool-args.test.js.map +1 -0
- package/dist/auth-staleness.d.ts +27 -0
- package/dist/auth-staleness.js +41 -0
- package/dist/auth-staleness.js.map +1 -0
- package/dist/auto-handoff.d.ts +2 -0
- package/dist/auto-handoff.js +40 -16
- package/dist/auto-handoff.js.map +1 -1
- package/dist/cli/sync-memory.js +31 -36
- package/dist/cli/sync-memory.js.map +1 -1
- package/dist/config.js +4 -1
- package/dist/config.js.map +1 -1
- package/dist/env-agent.d.ts +10 -0
- package/dist/env-agent.js +14 -0
- package/dist/env-agent.js.map +1 -0
- package/dist/hydration.js +54 -3
- package/dist/hydration.js.map +1 -1
- package/dist/index.js +229 -113
- package/dist/index.js.map +1 -1
- package/dist/local-mirror.d.ts +5 -0
- package/dist/local-mirror.js +72 -14
- package/dist/local-mirror.js.map +1 -1
- package/dist/oauth-credentials.d.ts +14 -0
- package/dist/oauth-credentials.js +35 -0
- package/dist/oauth-credentials.js.map +1 -0
- package/dist/pipeline/bulk-store.d.ts +46 -0
- package/dist/pipeline/bulk-store.js +165 -0
- package/dist/pipeline/bulk-store.js.map +1 -0
- package/dist/pipeline/existing-hashes.d.ts +20 -0
- package/dist/pipeline/existing-hashes.js +111 -0
- package/dist/pipeline/existing-hashes.js.map +1 -0
- package/dist/pipeline/ingestion.d.ts +8 -4
- package/dist/pipeline/ingestion.js +36 -8
- package/dist/pipeline/ingestion.js.map +1 -1
- package/dist/telemetry.d.ts +22 -0
- package/dist/telemetry.js +28 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tool-args.d.ts +52 -0
- package/dist/tool-args.js +78 -0
- package/dist/tool-args.js.map +1 -0
- package/dist/trust-ledger.js +2 -2
- package/dist/trust-ledger.js.map +1 -1
- package/package.json +9 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"existing-hashes.js","sourceRoot":"","sources":["../../src/pipeline/existing-hashes.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ export interface BulkStoreResult {
|
|
|
15
15
|
}
|
|
16
16
|
export type BulkStoreFn = (drafts: AisMemoryDraft[]) => Promise<BulkStoreResult>;
|
|
17
17
|
export type ReviewFn = (drafts: AisMemoryDraft[]) => Promise<AisMemoryDraft[]>;
|
|
18
|
+
/** AIS bulk endpoint limit — must not exceed this per request. */
|
|
19
|
+
export declare const BULK_BATCH_SIZE = 100;
|
|
18
20
|
export interface IngestionOptions {
|
|
19
21
|
adapter: SourceAdapter;
|
|
20
22
|
rawSourceData: string | FilesystemResult;
|
|
@@ -43,10 +45,12 @@ export interface IngestionOptions {
|
|
|
43
45
|
* Failure semantics:
|
|
44
46
|
* - If `bulkStore` throws, neither ledger nor mirror is updated — the caller
|
|
45
47
|
* may safely retry the entire run without double-counting.
|
|
46
|
-
* - If `
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
48
|
+
* - If `bulkStore` returns any failures, the trust ledger is not advanced —
|
|
49
|
+
* partial AIS writes must not count toward auto-commit trust.
|
|
50
|
+
* - If `mirror.append` throws after a fully successful `bulkStore`, the
|
|
51
|
+
* ledger has already been advanced (AIS accepted all memories) and the
|
|
52
|
+
* failure is surfaced as a `warnings` entry rather than an exception so
|
|
53
|
+
* the caller receives a valid `SyncResult`.
|
|
50
54
|
*
|
|
51
55
|
* Zero-import path:
|
|
52
56
|
* - When all candidates are dedupe-skipped or rejected by `review`,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { preCommitDedupe } from './dedupe.js';
|
|
2
2
|
import { applyTrustTags } from './trust-tagger.js';
|
|
3
|
+
/** AIS bulk endpoint limit — must not exceed this per request. */
|
|
4
|
+
export const BULK_BATCH_SIZE = 100;
|
|
3
5
|
/**
|
|
4
6
|
* Run the full ingestion pipeline for a single source adapter + scope pair.
|
|
5
7
|
*
|
|
@@ -15,10 +17,12 @@ import { applyTrustTags } from './trust-tagger.js';
|
|
|
15
17
|
* Failure semantics:
|
|
16
18
|
* - If `bulkStore` throws, neither ledger nor mirror is updated — the caller
|
|
17
19
|
* may safely retry the entire run without double-counting.
|
|
18
|
-
* - If `
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
20
|
+
* - If `bulkStore` returns any failures, the trust ledger is not advanced —
|
|
21
|
+
* partial AIS writes must not count toward auto-commit trust.
|
|
22
|
+
* - If `mirror.append` throws after a fully successful `bulkStore`, the
|
|
23
|
+
* ledger has already been advanced (AIS accepted all memories) and the
|
|
24
|
+
* failure is surfaced as a `warnings` entry rather than an exception so
|
|
25
|
+
* the caller receives a valid `SyncResult`.
|
|
22
26
|
*
|
|
23
27
|
* Zero-import path:
|
|
24
28
|
* - When all candidates are dedupe-skipped or rejected by `review`,
|
|
@@ -47,10 +51,13 @@ export async function runIngestion(options) {
|
|
|
47
51
|
failed: [],
|
|
48
52
|
};
|
|
49
53
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// trust
|
|
53
|
-
|
|
54
|
+
// Split approved drafts into chunks to stay within AIS bulk limit.
|
|
55
|
+
const storeResult = await chunkedBulkStore(bulkStore, approved);
|
|
56
|
+
// Advance trust only on a clean bulk store — partial failures must not
|
|
57
|
+
// increment syncCount toward auto-commit.
|
|
58
|
+
if (storeResult.failed.length === 0) {
|
|
59
|
+
ledger.recordSync(agentId, adapter.id, scopeKey);
|
|
60
|
+
}
|
|
54
61
|
const mirrorEntries = storeResult.created.map((c) => ({
|
|
55
62
|
aisMemoryId: c.id,
|
|
56
63
|
memory: approved[c.index],
|
|
@@ -72,6 +79,27 @@ export async function runIngestion(options) {
|
|
|
72
79
|
failed: storeResult.failed,
|
|
73
80
|
};
|
|
74
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Call `fn` in batches of BULK_BATCH_SIZE, remapping per-batch indices to
|
|
84
|
+
* global indices so callers see a single aggregated BulkStoreResult.
|
|
85
|
+
*/
|
|
86
|
+
async function chunkedBulkStore(fn, drafts) {
|
|
87
|
+
if (drafts.length <= BULK_BATCH_SIZE) {
|
|
88
|
+
return fn(drafts);
|
|
89
|
+
}
|
|
90
|
+
const aggregated = { created: [], failed: [] };
|
|
91
|
+
for (let offset = 0; offset < drafts.length; offset += BULK_BATCH_SIZE) {
|
|
92
|
+
const chunk = drafts.slice(offset, offset + BULK_BATCH_SIZE);
|
|
93
|
+
const result = await fn(chunk);
|
|
94
|
+
for (const c of result.created) {
|
|
95
|
+
aggregated.created.push({ index: c.index + offset, id: c.id });
|
|
96
|
+
}
|
|
97
|
+
for (const f of result.failed) {
|
|
98
|
+
aggregated.failed.push({ index: f.index + offset, error: f.error });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return aggregated;
|
|
102
|
+
}
|
|
75
103
|
function scopeToKey(scope) {
|
|
76
104
|
// Stable multi-field encoding prevents collisions when optional fields
|
|
77
105
|
// are absent. Pipe separator is safe because none of the component
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingestion.js","sourceRoot":"","sources":["../../src/pipeline/ingestion.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ingestion.js","sourceRoot":"","sources":["../../src/pipeline/ingestion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type TelemetryEventName = 'auth.device_flow.start' | 'auth.key.success' | 'auth.key.fallback' | 'tool.call' | 'ais.http.failure';
|
|
2
|
+
export interface TelemetryEvent {
|
|
3
|
+
event: TelemetryEventName;
|
|
4
|
+
ts: string;
|
|
5
|
+
/** SHA-256 prefix of agent id (16 hex chars), when applicable */
|
|
6
|
+
agentIdHash?: string;
|
|
7
|
+
tool?: string;
|
|
8
|
+
path?: string;
|
|
9
|
+
latencyMs?: number;
|
|
10
|
+
status?: 'ok' | 'error';
|
|
11
|
+
httpStatus?: number;
|
|
12
|
+
error?: string;
|
|
13
|
+
detail?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Returns whether structured telemetry emission is enabled. */
|
|
16
|
+
export declare function isTelemetryEnabled(): boolean;
|
|
17
|
+
/** One-way hash for agent id — safe for operational dashboards. */
|
|
18
|
+
export declare function hashAgentId(agentId: string): string;
|
|
19
|
+
/** Emit a single JSON telemetry line when opt-in is enabled. */
|
|
20
|
+
export declare function emitTelemetry(event: Omit<TelemetryEvent, 'ts'> & {
|
|
21
|
+
ts?: string;
|
|
22
|
+
}): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in structured telemetry for aismemory MCP (JSON lines on stderr).
|
|
3
|
+
*
|
|
4
|
+
* Enable with AISMEMORY_TELEMETRY=1 (or "true"/"yes"). Events are suitable for
|
|
5
|
+
* log aggregation; agent IDs are hashed — never emitted in plain text.
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
8
|
+
const TRUTHY = new Set(['1', 'true', 'yes', 'on']);
|
|
9
|
+
/** Returns whether structured telemetry emission is enabled. */
|
|
10
|
+
export function isTelemetryEnabled() {
|
|
11
|
+
const raw = process.env['AISMEMORY_TELEMETRY']?.trim().toLowerCase();
|
|
12
|
+
return raw !== undefined && TRUTHY.has(raw);
|
|
13
|
+
}
|
|
14
|
+
/** One-way hash for agent id — safe for operational dashboards. */
|
|
15
|
+
export function hashAgentId(agentId) {
|
|
16
|
+
return createHash('sha256').update(agentId).digest('hex').slice(0, 16);
|
|
17
|
+
}
|
|
18
|
+
/** Emit a single JSON telemetry line when opt-in is enabled. */
|
|
19
|
+
export function emitTelemetry(event) {
|
|
20
|
+
if (!isTelemetryEnabled())
|
|
21
|
+
return;
|
|
22
|
+
const payload = {
|
|
23
|
+
...event,
|
|
24
|
+
ts: event.ts ?? new Date().toISOString(),
|
|
25
|
+
};
|
|
26
|
+
process.stderr.write(`[aismemory-telemetry] ${JSON.stringify(payload)}\n`);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAuBzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAEnD,gEAAgE;AAChE,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrE,OAAO,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,aAAa,CAAC,KAAmD;IAC/E,IAAI,CAAC,kBAAkB,EAAE;QAAE,OAAO;IAClC,MAAM,OAAO,GAAmB;QAC9B,GAAG,KAAK;QACR,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACzC,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime validation for MCP tool arguments before AIS HTTP calls.
|
|
3
|
+
* Schemas mirror the JSON Schema declared in `tools` (index.ts) and AIS limits.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/** Max content/query length for memories (matches AIS memory-handlers). */
|
|
7
|
+
export declare const MAX_MEMORY_CONTENT_LENGTH: number;
|
|
8
|
+
/** Max recall limit (matches AIS memory-handlers). */
|
|
9
|
+
export declare const MAX_QUERY_LIMIT = 100;
|
|
10
|
+
export declare const rememberArgsSchema: z.ZodObject<{
|
|
11
|
+
content: z.ZodString;
|
|
12
|
+
type: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
13
|
+
goal: "goal";
|
|
14
|
+
fact: "fact";
|
|
15
|
+
event: "event";
|
|
16
|
+
lesson: "lesson";
|
|
17
|
+
context: "context";
|
|
18
|
+
task: "task";
|
|
19
|
+
}>>>;
|
|
20
|
+
importance: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export declare const recallArgsSchema: z.ZodObject<{
|
|
23
|
+
query: z.ZodString;
|
|
24
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
26
|
+
goal: "goal";
|
|
27
|
+
fact: "fact";
|
|
28
|
+
event: "event";
|
|
29
|
+
lesson: "lesson";
|
|
30
|
+
context: "context";
|
|
31
|
+
task: "task";
|
|
32
|
+
}>>;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
export declare const handoffArgsSchema: z.ZodObject<{
|
|
35
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
36
|
+
keyLearnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
37
|
+
}, z.core.$strip>;
|
|
38
|
+
export declare const agentLoadArgsSchema: z.ZodObject<{
|
|
39
|
+
query: z.ZodString;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
/** Tools with no parameters — reject unexpected keys. */
|
|
42
|
+
export declare const emptyArgsSchema: z.ZodObject<{}, z.core.$strict>;
|
|
43
|
+
export type RememberArgs = z.infer<typeof rememberArgsSchema>;
|
|
44
|
+
export type RecallArgs = z.infer<typeof recallArgsSchema>;
|
|
45
|
+
export type HandoffArgs = z.infer<typeof handoffArgsSchema>;
|
|
46
|
+
export type AgentLoadArgs = z.infer<typeof agentLoadArgsSchema>;
|
|
47
|
+
export declare function formatValidationError(error: z.ZodError): string;
|
|
48
|
+
export declare function parseRememberArgs(raw: unknown): RememberArgs;
|
|
49
|
+
export declare function parseRecallArgs(raw: unknown): RecallArgs;
|
|
50
|
+
export declare function parseHandoffArgs(raw: unknown): HandoffArgs;
|
|
51
|
+
export declare function parseAgentLoadArgs(raw: unknown): AgentLoadArgs;
|
|
52
|
+
export declare function parseEmptyToolArgs(raw: unknown): Record<string, never>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime validation for MCP tool arguments before AIS HTTP calls.
|
|
3
|
+
* Schemas mirror the JSON Schema declared in `tools` (index.ts) and AIS limits.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/** Max content/query length for memories (matches AIS memory-handlers). */
|
|
7
|
+
export const MAX_MEMORY_CONTENT_LENGTH = 256 * 1024;
|
|
8
|
+
/** Max recall limit (matches AIS memory-handlers). */
|
|
9
|
+
export const MAX_QUERY_LIMIT = 100;
|
|
10
|
+
const memoryTypeSchema = z.enum(['fact', 'event', 'lesson', 'context', 'goal', 'task']);
|
|
11
|
+
export const rememberArgsSchema = z.object({
|
|
12
|
+
content: z
|
|
13
|
+
.string({ message: 'content is required and must be a string' })
|
|
14
|
+
.min(1, 'content is required and must be a string')
|
|
15
|
+
.max(MAX_MEMORY_CONTENT_LENGTH, `content exceeds maximum length of ${MAX_MEMORY_CONTENT_LENGTH} bytes`),
|
|
16
|
+
type: memoryTypeSchema.optional().default('context'),
|
|
17
|
+
importance: z.number().min(0).max(1).optional().default(0.5),
|
|
18
|
+
});
|
|
19
|
+
export const recallArgsSchema = z.object({
|
|
20
|
+
query: z
|
|
21
|
+
.string({ message: 'query is required and must be a string' })
|
|
22
|
+
.min(1, 'query is required and must be a string')
|
|
23
|
+
.max(MAX_MEMORY_CONTENT_LENGTH, `query exceeds maximum length of ${MAX_MEMORY_CONTENT_LENGTH} bytes`),
|
|
24
|
+
limit: z.number().int().min(1).max(MAX_QUERY_LIMIT).optional(),
|
|
25
|
+
type: memoryTypeSchema.optional(),
|
|
26
|
+
});
|
|
27
|
+
export const handoffArgsSchema = z.object({
|
|
28
|
+
summary: z
|
|
29
|
+
.string()
|
|
30
|
+
.max(MAX_MEMORY_CONTENT_LENGTH, `summary exceeds maximum length of ${MAX_MEMORY_CONTENT_LENGTH} bytes`)
|
|
31
|
+
.optional(),
|
|
32
|
+
keyLearnings: z
|
|
33
|
+
.array(z
|
|
34
|
+
.string()
|
|
35
|
+
.max(MAX_MEMORY_CONTENT_LENGTH, `keyLearnings item exceeds maximum length of ${MAX_MEMORY_CONTENT_LENGTH} bytes`))
|
|
36
|
+
.max(100, 'keyLearnings exceeds maximum of 100 items')
|
|
37
|
+
.optional(),
|
|
38
|
+
});
|
|
39
|
+
export const agentLoadArgsSchema = z.object({
|
|
40
|
+
query: z
|
|
41
|
+
.string({ message: 'agent_load: query is required' })
|
|
42
|
+
.trim()
|
|
43
|
+
.min(1, 'agent_load: query is required')
|
|
44
|
+
.max(500, 'agent_load: query exceeds maximum length of 500 characters'),
|
|
45
|
+
});
|
|
46
|
+
/** Tools with no parameters — reject unexpected keys. */
|
|
47
|
+
export const emptyArgsSchema = z.object({}).strict();
|
|
48
|
+
export function formatValidationError(error) {
|
|
49
|
+
return error.issues
|
|
50
|
+
.map((issue) => {
|
|
51
|
+
const path = issue.path.length > 0 ? `${issue.path.join('.')}: ` : '';
|
|
52
|
+
return `${path}${issue.message}`;
|
|
53
|
+
})
|
|
54
|
+
.join('; ');
|
|
55
|
+
}
|
|
56
|
+
function parseOrThrow(schema, raw) {
|
|
57
|
+
const result = schema.safeParse(raw);
|
|
58
|
+
if (!result.success) {
|
|
59
|
+
throw new Error(formatValidationError(result.error));
|
|
60
|
+
}
|
|
61
|
+
return result.data;
|
|
62
|
+
}
|
|
63
|
+
export function parseRememberArgs(raw) {
|
|
64
|
+
return parseOrThrow(rememberArgsSchema, raw);
|
|
65
|
+
}
|
|
66
|
+
export function parseRecallArgs(raw) {
|
|
67
|
+
return parseOrThrow(recallArgsSchema, raw);
|
|
68
|
+
}
|
|
69
|
+
export function parseHandoffArgs(raw) {
|
|
70
|
+
return parseOrThrow(handoffArgsSchema, raw);
|
|
71
|
+
}
|
|
72
|
+
export function parseAgentLoadArgs(raw) {
|
|
73
|
+
return parseOrThrow(agentLoadArgsSchema, raw);
|
|
74
|
+
}
|
|
75
|
+
export function parseEmptyToolArgs(raw) {
|
|
76
|
+
return parseOrThrow(emptyArgsSchema, raw);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=tool-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-args.js","sourceRoot":"","sources":["../src/tool-args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,2EAA2E;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,GAAG,IAAI,CAAC;AAEpD,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC;SACP,MAAM,CAAC,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC;SAC/D,GAAG,CAAC,CAAC,EAAE,0CAA0C,CAAC;SAClD,GAAG,CACF,yBAAyB,EACzB,qCAAqC,yBAAyB,QAAQ,CACvE;IACH,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;SAC7D,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;SAChD,GAAG,CACF,yBAAyB,EACzB,mCAAmC,yBAAyB,QAAQ,CACrE;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IAC9D,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CACF,yBAAyB,EACzB,qCAAqC,yBAAyB,QAAQ,CACvE;SACA,QAAQ,EAAE;IACb,YAAY,EAAE,CAAC;SACZ,KAAK,CACJ,CAAC;SACE,MAAM,EAAE;SACR,GAAG,CACF,yBAAyB,EACzB,+CAA+C,yBAAyB,QAAQ,CACjF,CACJ;SACA,GAAG,CAAC,GAAG,EAAE,2CAA2C,CAAC;SACrD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;SACpD,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;SACvC,GAAG,CAAC,GAAG,EAAE,4DAA4D,CAAC;CAC1E,CAAC,CAAC;AAEH,yDAAyD;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAOrD,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,OAAO,KAAK,CAAC,MAAM;SAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAI,MAAoB,EAAE,GAAY;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,YAAY,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,YAAY,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,YAAY,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC"}
|
package/dist/trust-ledger.js
CHANGED
|
@@ -19,10 +19,10 @@ export class TrustLedger {
|
|
|
19
19
|
const backup = `${this.filePath}.corrupt-${Date.now()}`;
|
|
20
20
|
try {
|
|
21
21
|
renameSync(this.filePath, backup);
|
|
22
|
-
|
|
22
|
+
process.stderr.write(`[TrustLedger] Corrupt ledger file renamed to ${backup}; starting fresh.\n`);
|
|
23
23
|
}
|
|
24
24
|
catch {
|
|
25
|
-
|
|
25
|
+
process.stderr.write(`[TrustLedger] Corrupt ledger file could not be backed up; starting fresh.\n`);
|
|
26
26
|
}
|
|
27
27
|
this.data = {};
|
|
28
28
|
}
|
package/dist/trust-ledger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust-ledger.js","sourceRoot":"","sources":["../src/trust-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAqBlC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,MAAM,OAAO,WAAW;IACL,QAAQ,CAAS;IAC1B,IAAI,CAAa;IAEzB,YAAY,OAAe,OAAO,EAAE;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAe,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBAClC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"trust-ledger.js","sourceRoot":"","sources":["../src/trust-ledger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aismemory",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Persistent memory for AI agents. MCP server that connects to Agent Identity Service.",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"bin":
|
|
6
|
+
"bin": {
|
|
7
|
+
"aismemory": "dist/index.js",
|
|
8
|
+
"aismemory-sync": "dist/cli/sync-memory.js"
|
|
9
|
+
},
|
|
7
10
|
"main": "dist/index.js",
|
|
8
11
|
"files": [
|
|
9
12
|
"dist",
|
|
10
13
|
"README.md"
|
|
11
14
|
],
|
|
12
15
|
"scripts": {
|
|
13
|
-
"build": "tsc && chmod +x dist/index.js",
|
|
16
|
+
"build": "tsc && chmod +x dist/index.js dist/cli/sync-memory.js",
|
|
14
17
|
"prepack": "npm run build",
|
|
18
|
+
"sync": "node dist/cli/sync-memory.js",
|
|
15
19
|
"test": "vitest run"
|
|
16
20
|
},
|
|
17
21
|
"keywords": [
|
|
@@ -25,7 +29,8 @@
|
|
|
25
29
|
"author": "Agents & Swarms <hello@agentsandswarms.ai>",
|
|
26
30
|
"license": "MIT",
|
|
27
31
|
"dependencies": {
|
|
28
|
-
"@modelcontextprotocol/sdk": "^1.25.0"
|
|
32
|
+
"@modelcontextprotocol/sdk": "^1.25.0",
|
|
33
|
+
"zod": "^4.1.13"
|
|
29
34
|
},
|
|
30
35
|
"devDependencies": {
|
|
31
36
|
"typescript": "^5.7.0",
|