@rotifer/playground 0.32.1 → 0.33.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/CHANGELOG.md +27 -0
- package/README.md +2 -2
- package/README.zh.md +2 -2
- package/dist/cloud/client.d.ts +28 -0
- package/dist/cloud/client.d.ts.map +1 -1
- package/dist/cloud/client.js +114 -25
- package/dist/cloud/client.js.map +1 -1
- package/dist/commands/agent-create.d.ts +11 -0
- package/dist/commands/agent-create.d.ts.map +1 -1
- package/dist/commands/agent-create.js +50 -1
- package/dist/commands/agent-create.js.map +1 -1
- package/dist/commands/agent-memory.d.ts +64 -0
- package/dist/commands/agent-memory.d.ts.map +1 -0
- package/dist/commands/agent-memory.js +235 -0
- package/dist/commands/agent-memory.js.map +1 -0
- package/dist/commands/agent-run.d.ts.map +1 -1
- package/dist/commands/agent-run.js +84 -26
- package/dist/commands/agent-run.js.map +1 -1
- package/dist/commands/arena-submit.d.ts.map +1 -1
- package/dist/commands/arena-submit.js +9 -24
- package/dist/commands/arena-submit.js.map +1 -1
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +3 -1
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +32 -6
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/genome-format.d.ts +5 -1
- package/dist/commands/genome-format.d.ts.map +1 -1
- package/dist/commands/genome-format.js +5 -1
- package/dist/commands/genome-format.js.map +1 -1
- package/dist/commands/hello.d.ts.map +1 -1
- package/dist/commands/hello.js +15 -2
- package/dist/commands/hello.js.map +1 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +3 -1
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +3 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/reputation.d.ts.map +1 -1
- package/dist/commands/reputation.js +3 -1
- package/dist/commands/reputation.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +59 -4
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +3 -1
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +78 -25
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/versions.d.ts.map +1 -1
- package/dist/commands/versions.js +4 -1
- package/dist/commands/versions.js.map +1 -1
- package/dist/commands/wrap.d.ts.map +1 -1
- package/dist/commands/wrap.js +28 -70
- package/dist/commands/wrap.js.map +1 -1
- package/dist/index.js +47 -1
- package/dist/index.js.map +1 -1
- package/dist/memory/access.d.ts +53 -0
- package/dist/memory/access.d.ts.map +1 -0
- package/dist/memory/access.js +111 -0
- package/dist/memory/access.js.map +1 -0
- package/dist/memory/audit.d.ts +26 -0
- package/dist/memory/audit.d.ts.map +1 -0
- package/dist/memory/audit.js +30 -0
- package/dist/memory/audit.js.map +1 -0
- package/dist/memory/backend.d.ts +141 -0
- package/dist/memory/backend.d.ts.map +1 -0
- package/dist/memory/backend.js +536 -0
- package/dist/memory/backend.js.map +1 -0
- package/dist/memory/codec.d.ts +34 -0
- package/dist/memory/codec.d.ts.map +1 -0
- package/dist/memory/codec.js +184 -0
- package/dist/memory/codec.js.map +1 -0
- package/dist/memory/data-policy.d.ts +39 -0
- package/dist/memory/data-policy.d.ts.map +1 -0
- package/dist/memory/data-policy.js +42 -0
- package/dist/memory/data-policy.js.map +1 -0
- package/dist/memory/host.d.ts +119 -0
- package/dist/memory/host.d.ts.map +1 -0
- package/dist/memory/host.js +226 -0
- package/dist/memory/host.js.map +1 -0
- package/dist/memory/index.d.ts +37 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +64 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/telemetry.d.ts +35 -0
- package/dist/memory/telemetry.d.ts.map +1 -0
- package/dist/memory/telemetry.js +51 -0
- package/dist/memory/telemetry.js.map +1 -0
- package/dist/memory/types.d.ts +110 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +74 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/publish/auto-publish.d.ts +1 -1
- package/dist/publish/auto-publish.js +1 -1
- package/dist/testsuite/gate.d.ts +8 -0
- package/dist/testsuite/gate.d.ts.map +1 -1
- package/dist/testsuite/gate.js +8 -2
- package/dist/testsuite/gate.js.map +1 -1
- package/dist/utils/arena-success.d.ts +10 -0
- package/dist/utils/arena-success.d.ts.map +1 -1
- package/dist/utils/arena-success.js +35 -8
- package/dist/utils/arena-success.js.map +1 -1
- package/dist/utils/binding.d.ts +6 -2
- package/dist/utils/binding.d.ts.map +1 -1
- package/dist/utils/binding.js.map +1 -1
- package/dist/utils/clawhub-client.d.ts +73 -0
- package/dist/utils/clawhub-client.d.ts.map +1 -0
- package/dist/utils/clawhub-client.js +176 -0
- package/dist/utils/clawhub-client.js.map +1 -0
- package/dist/utils/config.d.ts +7 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +15 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/gene-id-display.d.ts +14 -0
- package/dist/utils/gene-id-display.d.ts.map +1 -0
- package/dist/utils/gene-id-display.js +64 -0
- package/dist/utils/gene-id-display.js.map +1 -0
- package/dist/utils/l0-gate.d.ts.map +1 -1
- package/dist/utils/l0-gate.js +4 -1
- package/dist/utils/l0-gate.js.map +1 -1
- package/dist/utils/rust-phenotype.d.ts +17 -5
- package/dist/utils/rust-phenotype.d.ts.map +1 -1
- package/dist/utils/rust-phenotype.js +25 -4
- package/dist/utils/rust-phenotype.js.map +1 -1
- package/package.json +10 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/memory/audit.ts"],"names":[],"mappings":";;AA+CA,sCAUC;AAzDD;;;;;;;;;GASG;AACH,qCAAoD;AACpD,yCAA0C;AAC1C,yCAAoF;AAkCpF,2EAA2E;AAC3E,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,IAAI,CAAC;YACH,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3D,IAAA,wBAAc,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,sBAAW,CAAC,sBAAsB,EAAE,kCAAmC,GAA6B,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;QACpI,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { MemoryAuditSink } from "./audit.js";
|
|
2
|
+
import { type MemoryTelemetrySink } from "./telemetry.js";
|
|
3
|
+
import { MemoryError, type MemoryAccessPolicy, type MemoryCategory, type MemoryEntryJson, type MemoryFilter, type RetentionPolicy } from "./types.js";
|
|
4
|
+
/** Who is asking: the agent, and the gene inside it making the call. */
|
|
5
|
+
export interface MemoryCaller {
|
|
6
|
+
agentId: string;
|
|
7
|
+
/** Content-derived gene id (createdBy / lastAccessedBy). */
|
|
8
|
+
geneId: string;
|
|
9
|
+
/** The calling gene's phenotype domain (SAME_DOMAIN checks). */
|
|
10
|
+
domain: string;
|
|
11
|
+
}
|
|
12
|
+
export interface MemoryWriteRequest {
|
|
13
|
+
key: string;
|
|
14
|
+
/** Standard base64. */
|
|
15
|
+
value: string;
|
|
16
|
+
category: MemoryCategory;
|
|
17
|
+
/** Omitted: a new entry gets the default; an update keeps the stored one. */
|
|
18
|
+
accessPolicy?: MemoryAccessPolicy;
|
|
19
|
+
/** Omitted: a new entry gets null (inherit); an update keeps the stored one. null resets to inherit (creator only). */
|
|
20
|
+
retentionPolicy?: RetentionPolicy | null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The store. Each call checks the caller's scope first and
|
|
24
|
+
* throws MemoryError with a memory error code; every state change is audited.
|
|
25
|
+
*/
|
|
26
|
+
export interface MemoryBackend {
|
|
27
|
+
read(caller: MemoryCaller, key: string, category: MemoryCategory | null): MemoryEntryJson | null;
|
|
28
|
+
write(caller: MemoryCaller, request: MemoryWriteRequest): MemoryEntryJson;
|
|
29
|
+
query(caller: MemoryCaller, filter: MemoryFilter): MemoryEntryJson[];
|
|
30
|
+
delete(caller: MemoryCaller, key: string): void;
|
|
31
|
+
/** Bytes the agent's memory counts against its quota, and the quota. */
|
|
32
|
+
usage(agentId: string): {
|
|
33
|
+
totalSize: number;
|
|
34
|
+
quota: number;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/** What the deployer configured for an agent's memory (agent record). */
|
|
38
|
+
export interface AgentMemoryConfig {
|
|
39
|
+
/** Bytes. */
|
|
40
|
+
quota: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The AgentMemory methods of rotifer-napi's PlaygroundBinding (v0.9.4).
|
|
44
|
+
* Requests are the wire JSON; errors are thrown as "CODE: message".
|
|
45
|
+
*/
|
|
46
|
+
export interface NativeMemoryApi {
|
|
47
|
+
memoryRead(agentId: string, callerGeneId: string, callerDomain: string, requestJson: string): unknown;
|
|
48
|
+
memoryWrite(agentId: string, callerGeneId: string, callerDomain: string, requestJson: string): unknown;
|
|
49
|
+
memoryQuery(agentId: string, callerGeneId: string, callerDomain: string, requestJson: string): unknown;
|
|
50
|
+
memoryDelete(agentId: string, callerGeneId: string, callerDomain: string, requestJson: string): unknown;
|
|
51
|
+
/** The whole AgentMemory (wire JSON): the deployer's view. */
|
|
52
|
+
memoryGet(agentId: string): unknown;
|
|
53
|
+
memoryCreate(agentId: string, quotaBytes?: number): unknown;
|
|
54
|
+
/** The agent's DataPolicy retention in days, inherited by entries with no retentionPolicy; null: unlimited. */
|
|
55
|
+
memorySetDataPolicyRetention(agentId: string, days: number | null): unknown;
|
|
56
|
+
}
|
|
57
|
+
export declare function hasNativeMemory(binding: unknown): binding is NativeMemoryApi;
|
|
58
|
+
/** The napi store, behind MemoryBackend. Its errors become MemoryError. */
|
|
59
|
+
export declare class NapiMemoryBackend implements MemoryBackend {
|
|
60
|
+
private readonly native;
|
|
61
|
+
constructor(native: NativeMemoryApi);
|
|
62
|
+
read(caller: MemoryCaller, key: string, category: MemoryCategory | null): MemoryEntryJson | null;
|
|
63
|
+
write(caller: MemoryCaller, request: MemoryWriteRequest): MemoryEntryJson;
|
|
64
|
+
query(caller: MemoryCaller, filter: MemoryFilter): MemoryEntryJson[];
|
|
65
|
+
delete(caller: MemoryCaller, key: string): void;
|
|
66
|
+
usage(agentId: string): {
|
|
67
|
+
totalSize: number;
|
|
68
|
+
quota: number;
|
|
69
|
+
};
|
|
70
|
+
private call;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* napi throws "MEMORY_X: message" → MemoryError(code, message). Anything else
|
|
74
|
+
* the binding throws is a storage failure, not a pass-through.
|
|
75
|
+
*/
|
|
76
|
+
export declare function asMemoryError(err: unknown): MemoryError;
|
|
77
|
+
/**
|
|
78
|
+
* Complete test double: one JSON file per agent under
|
|
79
|
+
* `<root>/.rotifer/memory/<agentId>.json`. Audit lines go to the given sink
|
|
80
|
+
* before the file is replaced, and a failed audit or file write fails the
|
|
81
|
+
* call with MEMORY_STORAGE_ERROR. Not safe for concurrent
|
|
82
|
+
* writers across processes — it is not a production store.
|
|
83
|
+
*/
|
|
84
|
+
export declare class JsonFileMemoryBackend implements MemoryBackend {
|
|
85
|
+
private readonly root;
|
|
86
|
+
private readonly configFor;
|
|
87
|
+
private readonly telemetry;
|
|
88
|
+
private readonly audit;
|
|
89
|
+
private readonly now;
|
|
90
|
+
constructor(root: string, configFor: (agentId: string) => AgentMemoryConfig, telemetry: MemoryTelemetrySink, audit: MemoryAuditSink, options?: {
|
|
91
|
+
now?: () => number;
|
|
92
|
+
});
|
|
93
|
+
read(caller: MemoryCaller, key: string, category: MemoryCategory | null): MemoryEntryJson | null;
|
|
94
|
+
write(caller: MemoryCaller, request: MemoryWriteRequest): MemoryEntryJson;
|
|
95
|
+
query(caller: MemoryCaller, filter: MemoryFilter): MemoryEntryJson[];
|
|
96
|
+
delete(caller: MemoryCaller, key: string): void;
|
|
97
|
+
/** Like napi's memoryGet, which it stands for: expired entries are purged first. */
|
|
98
|
+
usage(agentId: string): {
|
|
99
|
+
totalSize: number;
|
|
100
|
+
quota: number;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* napi's memorySetDataPolicyRetention: the agent's own retention, which an
|
|
104
|
+
* entry with no retentionPolicy inherits; null is unlimited. An integer
|
|
105
|
+
* 1..2147483647 or null, else MEMORY_INVALID_INPUT; an agent without memory
|
|
106
|
+
* is MEMORY_NOT_FOUND. Audited as retention_changed.
|
|
107
|
+
*/
|
|
108
|
+
setDataPolicyRetention(agentId: string, days: number | null): void;
|
|
109
|
+
/** Bytes of key + value + retention currently stored for the agent. */
|
|
110
|
+
totalSize(agentId: string): number;
|
|
111
|
+
private mayAccess;
|
|
112
|
+
private requireScope;
|
|
113
|
+
/**
|
|
114
|
+
* Every call comes from a gene with a v2 id, which is
|
|
115
|
+
* what createdBy / lastAccessedBy record. Any other caller is refused —
|
|
116
|
+
* audited with geneId null (and the entry, when the call named a key) and
|
|
117
|
+
* reported — before anything is read or written.
|
|
118
|
+
*/
|
|
119
|
+
private requireIdentity;
|
|
120
|
+
private deny;
|
|
121
|
+
private pathFor;
|
|
122
|
+
/**
|
|
123
|
+
* An entry expires once now >= updatedAt + maxRetentionDays. Only an entry
|
|
124
|
+
* with no retentionPolicy inherits the agent's; its own maxRetentionDays:
|
|
125
|
+
* null is unlimited.
|
|
126
|
+
*/
|
|
127
|
+
private isExpired;
|
|
128
|
+
/**
|
|
129
|
+
* The agent's memory with its expired entries purged first — removed,
|
|
130
|
+
* audited one "expired" line each (no key, geneId null), in entryId order —
|
|
131
|
+
* before the call that asked for it, which may still be refused: as
|
|
132
|
+
* rotifer-core does it at the start of each call's transaction.
|
|
133
|
+
*/
|
|
134
|
+
private loadLive;
|
|
135
|
+
private load;
|
|
136
|
+
/** Audit lines first, then the file; a failure in either is MEMORY_STORAGE_ERROR. */
|
|
137
|
+
private save;
|
|
138
|
+
private writeAudit;
|
|
139
|
+
private line;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/memory/backend.ts"],"names":[],"mappings":"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"}
|