@amalgm/chat 0.1.1 → 0.2.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/AGENTS.md +98 -0
- package/PURPOSE.md +143 -104
- package/README.md +82 -54
- package/dist/acp/index.d.ts +7 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +7 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/projection.d.ts +30 -0
- package/dist/acp/projection.d.ts.map +1 -0
- package/dist/acp/projection.js +147 -0
- package/dist/acp/projection.js.map +1 -0
- package/dist/api/conversations.d.ts +66 -0
- package/dist/api/conversations.d.ts.map +1 -0
- package/dist/api/conversations.js +202 -0
- package/dist/api/conversations.js.map +1 -0
- package/dist/api/index.d.ts +3 -3
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -2
- package/dist/api/index.js.map +1 -1
- package/dist/conversations/index.d.ts +3 -0
- package/dist/conversations/index.d.ts.map +1 -0
- package/dist/conversations/index.js +3 -0
- package/dist/conversations/index.js.map +1 -0
- package/dist/conversations/transcript.d.ts +13 -0
- package/dist/conversations/transcript.d.ts.map +1 -0
- package/dist/conversations/transcript.js +171 -0
- package/dist/conversations/transcript.js.map +1 -0
- package/dist/conversations/types.d.ts +147 -0
- package/dist/conversations/types.d.ts.map +1 -0
- package/dist/conversations/types.js +9 -0
- package/dist/conversations/types.js.map +1 -0
- package/dist/events/constructors.d.ts +9 -15
- package/dist/events/constructors.d.ts.map +1 -1
- package/dist/events/constructors.js +6 -12
- package/dist/events/constructors.js.map +1 -1
- package/dist/events/index.d.ts +2 -3
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +2 -3
- package/dist/events/index.js.map +1 -1
- package/dist/events/schema.d.ts +2 -5
- package/dist/events/schema.d.ts.map +1 -1
- package/dist/events/schema.js +2 -5
- package/dist/events/schema.js.map +1 -1
- package/dist/execution/contract.d.ts +51 -0
- package/dist/execution/contract.d.ts.map +1 -0
- package/dist/execution/contract.js +127 -0
- package/dist/execution/contract.js.map +1 -0
- package/dist/execution/index.d.ts +6 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +4 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/revision.d.ts +5 -0
- package/dist/execution/revision.d.ts.map +1 -0
- package/dist/execution/revision.js +17 -0
- package/dist/execution/revision.js.map +1 -0
- package/dist/execution/store.d.ts +26 -0
- package/dist/execution/store.d.ts.map +1 -0
- package/dist/execution/store.js +38 -0
- package/dist/execution/store.js.map +1 -0
- package/dist/index.d.ts +8 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -23
- package/dist/index.js.map +1 -1
- package/dist/input/index.d.ts +3 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +2 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/prompt.d.ts +17 -0
- package/dist/input/prompt.d.ts.map +1 -0
- package/dist/input/prompt.js +104 -0
- package/dist/input/prompt.js.map +1 -0
- package/dist/normalizers/claude.d.ts +6 -9
- package/dist/normalizers/claude.d.ts.map +1 -1
- package/dist/normalizers/claude.js +5 -8
- package/dist/normalizers/claude.js.map +1 -1
- package/dist/normalizers/codex.d.ts +5 -8
- package/dist/normalizers/codex.d.ts.map +1 -1
- package/dist/normalizers/codex.js +4 -7
- package/dist/normalizers/codex.js.map +1 -1
- package/dist/normalizers/cursor.d.ts +1 -2
- package/dist/normalizers/cursor.d.ts.map +1 -1
- package/dist/normalizers/cursor.js +2 -3
- package/dist/normalizers/cursor.js.map +1 -1
- package/dist/normalizers/index.d.ts +3 -5
- package/dist/normalizers/index.d.ts.map +1 -1
- package/dist/normalizers/index.js +3 -5
- package/dist/normalizers/index.js.map +1 -1
- package/dist/normalizers/opencode.d.ts +2 -4
- package/dist/normalizers/opencode.d.ts.map +1 -1
- package/dist/normalizers/opencode.js +2 -4
- package/dist/normalizers/opencode.js.map +1 -1
- package/dist/normalizers/pi.d.ts +3 -4
- package/dist/normalizers/pi.d.ts.map +1 -1
- package/dist/normalizers/pi.js +3 -4
- package/dist/normalizers/pi.js.map +1 -1
- package/dist/sessions/chat.d.ts +176 -0
- package/dist/sessions/chat.d.ts.map +1 -0
- package/dist/sessions/chat.js +701 -0
- package/dist/sessions/chat.js.map +1 -0
- package/dist/sessions/index.d.ts +3 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +2 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/transcript/index.d.ts +1 -1
- package/dist/transcript/index.js +1 -1
- package/dist/transcript/message-reducer.d.ts +1 -1
- package/dist/transcript/message-reducer.js +1 -1
- package/dist/transcript/part-accumulator.d.ts +1 -1
- package/dist/transcript/part-accumulator.js +1 -1
- package/dist/transcript/tool-display.d.ts +1 -1
- package/dist/transcript/tool-display.js +1 -1
- package/dist/transcript/tool-shape.d.ts +1 -1
- package/dist/transcript/tool-shape.js +1 -1
- package/dist/usage/finalize.d.ts +7 -9
- package/dist/usage/finalize.d.ts.map +1 -1
- package/dist/usage/finalize.js +11 -13
- package/dist/usage/finalize.js.map +1 -1
- package/dist/usage/index.d.ts +2 -3
- package/dist/usage/index.d.ts.map +1 -1
- package/dist/usage/index.js +2 -3
- package/dist/usage/index.js.map +1 -1
- package/dist/usage/model-catalog.d.ts +2 -3
- package/dist/usage/model-catalog.d.ts.map +1 -1
- package/dist/usage/model-catalog.js +10 -3
- package/dist/usage/model-catalog.js.map +1 -1
- package/dist/usage/normalize.d.ts +5 -7
- package/dist/usage/normalize.d.ts.map +1 -1
- package/dist/usage/normalize.js +3 -5
- package/dist/usage/normalize.js.map +1 -1
- package/dist/usage/ports.d.ts +14 -24
- package/dist/usage/ports.d.ts.map +1 -1
- package/dist/usage/ports.js +9 -17
- package/dist/usage/ports.js.map +1 -1
- package/dist/usage/steps.d.ts +70 -0
- package/dist/usage/steps.d.ts.map +1 -0
- package/dist/usage/steps.js +152 -0
- package/dist/usage/steps.js.map +1 -0
- package/dist/usage/tokens.d.ts +4 -7
- package/dist/usage/tokens.d.ts.map +1 -1
- package/dist/usage/tokens.js +4 -7
- package/dist/usage/tokens.js.map +1 -1
- package/docs/contracts/acp-and-step-usage.md +51 -0
- package/docs/contracts/conversation-persistence.md +47 -0
- package/docs/contracts/input-and-execution.md +177 -0
- package/docs/contracts/platform-authorization.md +17 -0
- package/host/adapters/acp-capabilities.js +30 -0
- package/host/adapters/acp-client.js +156 -0
- package/host/adapters/acp.js +284 -0
- package/host/adapters/claude.js +235 -0
- package/host/adapters/codex.js +733 -0
- package/host/adapters/cursor.js +347 -0
- package/host/adapters/input-capabilities.js +89 -0
- package/host/adapters/opencode.js +486 -0
- package/host/adapters/pi.js +519 -0
- package/host/adapters/prompt.js +212 -0
- package/host/auth.js +257 -0
- package/host/credentials/store.js +209 -0
- package/host/http.d.ts +32 -0
- package/host/http.js +238 -0
- package/host/index.d.ts +84 -0
- package/host/index.js +59 -0
- package/host/lib/runtime-paths.js +44 -0
- package/host/model-resolution.js +313 -0
- package/host/native-contract.js +185 -0
- package/host/native-runtime.js +194 -0
- package/host/permissions.js +27 -0
- package/host/platform-egress.js +114 -0
- package/host/recorder.js +61 -0
- package/host/sqlite/index.d.ts +69 -0
- package/host/sqlite/index.js +704 -0
- package/host/tooling/mcp-bundle.js +214 -0
- package/host/tooling/mcp-relay.js +83 -0
- package/host/tooling/native-binaries.js +667 -0
- package/host/tooling/native-config.js +460 -0
- package/host/tooling/package-import.js +111 -0
- package/host/tooling/runtime-home.js +26 -0
- package/host/tooling/system-instructions.js +69 -0
- package/host/tooling/system-prompt.js +35 -0
- package/package.json +45 -21
- package/skills/chat/SKILL.md +97 -0
- package/skills/chat/agents/openai.yaml +4 -0
- package/skills/chat/references/contracts.md +131 -0
- package/dist/api/chat-payloads.d.ts +0 -10
- package/dist/api/chat-payloads.d.ts.map +0 -1
- package/dist/api/chat-payloads.js +0 -57
- package/dist/api/chat-payloads.js.map +0 -1
- package/dist/contract/chat-input.d.ts +0 -144
- package/dist/contract/chat-input.d.ts.map +0 -1
- package/dist/contract/chat-input.js +0 -261
- package/dist/contract/chat-input.js.map +0 -1
- package/dist/contract/create.d.ts +0 -191
- package/dist/contract/create.d.ts.map +0 -1
- package/dist/contract/create.js +0 -249
- package/dist/contract/create.js.map +0 -1
- package/dist/contract/freeze.d.ts +0 -85
- package/dist/contract/freeze.d.ts.map +0 -1
- package/dist/contract/freeze.js +0 -151
- package/dist/contract/freeze.js.map +0 -1
- package/dist/contract/harnesses.d.ts +0 -21
- package/dist/contract/harnesses.d.ts.map +0 -1
- package/dist/contract/harnesses.js +0 -39
- package/dist/contract/harnesses.js.map +0 -1
- package/dist/contract/index.d.ts +0 -17
- package/dist/contract/index.d.ts.map +0 -1
- package/dist/contract/index.js +0 -17
- package/dist/contract/index.js.map +0 -1
- package/dist/contract/input.d.ts +0 -45
- package/dist/contract/input.d.ts.map +0 -1
- package/dist/contract/input.js +0 -78
- package/dist/contract/input.js.map +0 -1
- package/dist/contract/models.d.ts +0 -57
- package/dist/contract/models.d.ts.map +0 -1
- package/dist/contract/models.js +0 -380
- package/dist/contract/models.js.map +0 -1
- package/dist/contract/payload-merge.d.ts +0 -76
- package/dist/contract/payload-merge.d.ts.map +0 -1
- package/dist/contract/payload-merge.js +0 -215
- package/dist/contract/payload-merge.js.map +0 -1
- package/dist/events/tool-display.d.ts +0 -22
- package/dist/events/tool-display.d.ts.map +0 -1
- package/dist/events/tool-display.js +0 -60
- package/dist/events/tool-display.js.map +0 -1
- package/dist/events/tool-shape.d.ts +0 -48
- package/dist/events/tool-shape.d.ts.map +0 -1
- package/dist/events/tool-shape.js +0 -225
- package/dist/events/tool-shape.js.map +0 -1
- package/dist/turns/index.d.ts +0 -11
- package/dist/turns/index.d.ts.map +0 -1
- package/dist/turns/index.js +0 -11
- package/dist/turns/index.js.map +0 -1
- package/dist/turns/queries.d.ts +0 -36
- package/dist/turns/queries.d.ts.map +0 -1
- package/dist/turns/queries.js +0 -37
- package/dist/turns/queries.js.map +0 -1
- package/dist/turns/replay.d.ts +0 -105
- package/dist/turns/replay.d.ts.map +0 -1
- package/dist/turns/replay.js +0 -163
- package/dist/turns/replay.js.map +0 -1
- package/dist/turns/status.d.ts +0 -49
- package/dist/turns/status.d.ts.map +0 -1
- package/dist/turns/status.js +0 -56
- package/dist/turns/status.js.map +0 -1
- package/dist/turns/turn-store.d.ts +0 -109
- package/dist/turns/turn-store.d.ts.map +0 -1
- package/dist/turns/turn-store.js +0 -169
- package/dist/turns/turn-store.js.map +0 -1
- package/dist/warm/client-cache.d.ts +0 -47
- package/dist/warm/client-cache.d.ts.map +0 -1
- package/dist/warm/client-cache.js +0 -48
- package/dist/warm/client-cache.js.map +0 -1
- package/dist/warm/envelope-cache.d.ts +0 -79
- package/dist/warm/envelope-cache.d.ts.map +0 -1
- package/dist/warm/envelope-cache.js +0 -85
- package/dist/warm/envelope-cache.js.map +0 -1
- package/dist/warm/index.d.ts +0 -18
- package/dist/warm/index.d.ts.map +0 -1
- package/dist/warm/index.js +0 -12
- package/dist/warm/index.js.map +0 -1
- package/dist/warm/payload.d.ts +0 -137
- package/dist/warm/payload.d.ts.map +0 -1
- package/dist/warm/payload.js +0 -112
- package/dist/warm/payload.js.map +0 -1
- package/dist/warm/revision.d.ts +0 -70
- package/dist/warm/revision.d.ts.map +0 -1
- package/dist/warm/revision.js +0 -63
- package/dist/warm/revision.js.map +0 -1
- package/dist/warm/store-policy.d.ts +0 -57
- package/dist/warm/store-policy.d.ts.map +0 -1
- package/dist/warm/store-policy.js +0 -89
- package/dist/warm/store-policy.js.map +0 -1
- package/dist/warm/store.d.ts +0 -42
- package/dist/warm/store.d.ts.map +0 -1
- package/dist/warm/store.js +0 -69
- package/dist/warm/store.js.map +0 -1
- package/dist/wire/frames.d.ts +0 -208
- package/dist/wire/frames.d.ts.map +0 -1
- package/dist/wire/frames.js +0 -245
- package/dist/wire/frames.js.map +0 -1
- package/dist/wire/index.d.ts +0 -7
- package/dist/wire/index.d.ts.map +0 -1
- package/dist/wire/index.js +0 -7
- package/dist/wire/index.js.map +0 -1
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server-side launch-envelope cache policy — the pure laws of
|
|
3
|
-
* `amalgm-ui/lib/server/agentLaunchEnvelopeCache.ts` (Layer B in
|
|
4
|
-
* docs/warm-payloads.md).
|
|
5
|
-
*
|
|
6
|
-
* The `globalThis` Map itself, `crypto.randomUUID` id minting, and the
|
|
7
|
-
* store/get functions are host effects — this module exports the
|
|
8
|
-
* fingerprint law (sha256 injected via Sha256HexPort), the stable-sort
|
|
9
|
-
* law, the TTL/cap constants, and the prune decision as a pure function
|
|
10
|
-
* over an entries array + a clock reading.
|
|
11
|
-
*/
|
|
12
|
-
/** `agentLaunchEnvelopeCache.ts:4` — a warmed envelope lives 10 minutes. */
|
|
13
|
-
export const ENVELOPE_TTL_MS = 10 * 60 * 1000;
|
|
14
|
-
/** `agentLaunchEnvelopeCache.ts:5` — at most 200 envelopes; overflow evicts oldest-prepared. */
|
|
15
|
-
export const MAX_ENVELOPES = 200;
|
|
16
|
-
/**
|
|
17
|
-
* Stable-sort law — `agentLaunchEnvelopeCache.ts:28-37`. Recursively
|
|
18
|
-
* rebuilds objects with sorted keys so `JSON.stringify` is deterministic.
|
|
19
|
-
* (Unlike `stableJson` in payload.ts this keeps `undefined` values as
|
|
20
|
-
* object entries — the fingerprint input `?? null`s every field first, so
|
|
21
|
-
* the difference never surfaces there.)
|
|
22
|
-
*/
|
|
23
|
-
export function stableValue(value) {
|
|
24
|
-
if (Array.isArray(value))
|
|
25
|
-
return value.map(stableValue);
|
|
26
|
-
if (!value || typeof value !== 'object')
|
|
27
|
-
return value;
|
|
28
|
-
const input = value;
|
|
29
|
-
return Object.fromEntries(Object.keys(input)
|
|
30
|
-
.sort()
|
|
31
|
-
.map((key) => [key, stableValue(input[key])]));
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Fingerprint law — `agentLaunchEnvelopeCache.ts:52-72`: sha256 hex over
|
|
35
|
-
* the JSON of the stable-sorted `(userId, chatInput, modelId, harness,
|
|
36
|
-
* authMethod, mcpAppIds, systemPrompt, modelSettings, chatPayloadId,
|
|
37
|
-
* chatPayloadRevision, chatPayloadComputerId, cloudWorkspaceRef)` tuple,
|
|
38
|
-
* every absent field coerced to null. The UI calls
|
|
39
|
-
* `crypto.createHash('sha256')...digest('hex')`; the host injects the
|
|
40
|
-
* equivalent as `sha256Hex`.
|
|
41
|
-
*/
|
|
42
|
-
export function fingerprintLaunchEnvelopeInput(userId, body, sha256Hex) {
|
|
43
|
-
const stableInput = stableValue({
|
|
44
|
-
userId,
|
|
45
|
-
chatInput: body.chatInput ?? null,
|
|
46
|
-
modelId: body.modelId ?? null,
|
|
47
|
-
harness: body.harness ?? null,
|
|
48
|
-
authMethod: body.authMethod ?? null,
|
|
49
|
-
mcpAppIds: body.mcpAppIds ?? null,
|
|
50
|
-
systemPrompt: body.systemPrompt ?? null,
|
|
51
|
-
modelSettings: body.modelSettings ?? null,
|
|
52
|
-
chatPayloadId: body.chatPayloadId ?? null,
|
|
53
|
-
chatPayloadRevision: body.chatPayloadRevision ?? null,
|
|
54
|
-
chatPayloadComputerId: body.chatPayloadComputerId ?? null,
|
|
55
|
-
cloudWorkspaceRef: body.cloudWorkspaceRef ?? null,
|
|
56
|
-
});
|
|
57
|
-
return sha256Hex(JSON.stringify(stableInput));
|
|
58
|
-
}
|
|
59
|
-
/** Expiry law — `agentLaunchEnvelopeCache.ts:88`: expiresAt = preparedAt + TTL. */
|
|
60
|
-
export function envelopeExpiresAt(preparedAtMs) {
|
|
61
|
-
return preparedAtMs + ENVELOPE_TTL_MS;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Prune law — `agentLaunchEnvelopeCache.ts:39-50`, as a pure function:
|
|
65
|
-
* drop every entry with `expiresAt <= now`; then, if still over the cap,
|
|
66
|
-
* evict the oldest by `preparedAt` until exactly `MAX_ENVELOPES` remain.
|
|
67
|
-
* Returns the ids to delete; the host applies them to its Map.
|
|
68
|
-
*/
|
|
69
|
-
export function pruneAgentLaunchEnvelopes(entries, nowMs) {
|
|
70
|
-
const expiredIds = [];
|
|
71
|
-
const live = [];
|
|
72
|
-
for (const entry of entries) {
|
|
73
|
-
if (entry.expiresAt <= nowMs)
|
|
74
|
-
expiredIds.push(entry.id);
|
|
75
|
-
else
|
|
76
|
-
live.push(entry);
|
|
77
|
-
}
|
|
78
|
-
if (live.length <= MAX_ENVELOPES)
|
|
79
|
-
return { expiredIds, overflowIds: [] };
|
|
80
|
-
const oldest = live
|
|
81
|
-
.sort((a, b) => a.preparedAt - b.preparedAt)
|
|
82
|
-
.slice(0, live.length - MAX_ENVELOPES);
|
|
83
|
-
return { expiredIds, overflowIds: oldest.map((entry) => entry.id) };
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=envelope-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"envelope-cache.js","sourceRoot":"","sources":["../../src/warm/envelope-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/warm/index.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @amalgm/chat — warm-payload laws (how "enter" costs nothing).
|
|
3
|
-
* Design doc: docs/warm-payloads.md. Pure laws only: publishing,
|
|
4
|
-
* SQLite, state events, and HTTP are host effects behind ports.
|
|
5
|
-
*/
|
|
6
|
-
export type { HarnessId, AuthMethod, CliEffort, ModelCliSettings, CustomAgentLoadout, InstalledSkillSource, AgentConfigLoadout, AgentConfigSkill, AgentConfigHook, AgentConfigSubagent, AgentConfig, ChatPayloadAgentConfigSnapshot, ChatViewPayload, SessionStableChatViewPayload, LaunchEnvelopeRequest, } from './payload.js';
|
|
7
|
-
export { stableJson, getSessionStableChatViewPayload, mergeSessionStableChatViewPayload, buildLaunchEnvelopeRequest, } from './payload.js';
|
|
8
|
-
export type { MachineChatPayloadRecord, PendingMachinePayloadWrite, ConfirmedMachinePayloadWrite, MachinePayloadPublishDecision, } from './revision.js';
|
|
9
|
-
export { CONFIRMED_WRITE_TTL_MS, machinePayloadWriteKey, chatPayloadRevision, isConfirmedWriteFresh, machinePayloadPublishDecision, } from './revision.js';
|
|
10
|
-
export type { CachedAgentLaunchEnvelope, LaunchEnvelopeFingerprintInput, } from './envelope-cache.js';
|
|
11
|
-
export { ENVELOPE_TTL_MS, MAX_ENVELOPES, stableValue, fingerprintLaunchEnvelopeInput, envelopeExpiresAt, pruneAgentLaunchEnvelopes, } from './envelope-cache.js';
|
|
12
|
-
export type { LaunchEnvelopeCacheEntry } from './client-cache.js';
|
|
13
|
-
export { CACHE_WARM_DELAY_MS, machineKey, launchEnvelopeCacheKey, launchEnvelopePayloadKey, usableEntry, } from './client-cache.js';
|
|
14
|
-
export type { ChatPayloadStoreRecord } from './store-policy.js';
|
|
15
|
-
export { CHAT_PAYLOADS_META_KEY, CHAT_PAYLOADS_RESOURCE, CHAT_PAYLOAD_TTL_MS, CHAT_PAYLOAD_MAX_RECORDS, isPlainObject, cleanString, normalizeChatPayloadRecord, recordTimestamp, sweepChatPayloads, } from './store-policy.js';
|
|
16
|
-
export type { ChatPayloadMapStore, ChatPayloadStateEvent, ChatPayloadStoreOptions, } from './store.js';
|
|
17
|
-
export { ChatPayloadStore } from './store.js';
|
|
18
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/warm/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/warm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,8BAA8B,EAC9B,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,UAAU,EACV,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,aAAa,EACb,WAAW,EACX,8BAA8B,EAC9B,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,sBAAsB,EACtB,wBAAwB,EACxB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,WAAW,EACX,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/warm/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @amalgm/chat — warm-payload laws (how "enter" costs nothing).
|
|
3
|
-
* Design doc: docs/warm-payloads.md. Pure laws only: publishing,
|
|
4
|
-
* SQLite, state events, and HTTP are host effects behind ports.
|
|
5
|
-
*/
|
|
6
|
-
export { stableJson, getSessionStableChatViewPayload, mergeSessionStableChatViewPayload, buildLaunchEnvelopeRequest, } from './payload.js';
|
|
7
|
-
export { CONFIRMED_WRITE_TTL_MS, machinePayloadWriteKey, chatPayloadRevision, isConfirmedWriteFresh, machinePayloadPublishDecision, } from './revision.js';
|
|
8
|
-
export { ENVELOPE_TTL_MS, MAX_ENVELOPES, stableValue, fingerprintLaunchEnvelopeInput, envelopeExpiresAt, pruneAgentLaunchEnvelopes, } from './envelope-cache.js';
|
|
9
|
-
export { CACHE_WARM_DELAY_MS, machineKey, launchEnvelopeCacheKey, launchEnvelopePayloadKey, usableEntry, } from './client-cache.js';
|
|
10
|
-
export { CHAT_PAYLOADS_META_KEY, CHAT_PAYLOADS_RESOURCE, CHAT_PAYLOAD_TTL_MS, CHAT_PAYLOAD_MAX_RECORDS, isPlainObject, cleanString, normalizeChatPayloadRecord, recordTimestamp, sweepChatPayloads, } from './store-policy.js';
|
|
11
|
-
export { ChatPayloadStore } from './store.js';
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
package/dist/warm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/warm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,OAAO,EACL,UAAU,EACV,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAQtB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAMvB,OAAO,EACL,eAAe,EACf,aAAa,EACb,WAAW,EACX,8BAA8B,EAC9B,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,sBAAsB,EACtB,wBAAwB,EACxB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,WAAW,EACX,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/warm/payload.d.ts
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Warm-payload shapes and the stable-JSON / session-freeze / envelope-request
|
|
3
|
-
* laws — `amalgm-ui/lib/chat/payload.ts`, ported byte-exact.
|
|
4
|
-
*
|
|
5
|
-
* Design doc: docs/warm-payloads.md (Layer A shape + freeze interaction).
|
|
6
|
-
*
|
|
7
|
-
* The UI file imports its field types from elsewhere in amalgm-ui; those
|
|
8
|
-
* types are mirrored here verbatim so the SDK stands alone:
|
|
9
|
-
* - `HarnessId`, `AuthMethod` — amalgm-ui/lib/harnesses.ts:26,30
|
|
10
|
-
* - `CliEffort`, `ModelCliSettings` — amalgm-ui/lib/modelSettings.ts:4-11
|
|
11
|
-
* - `CustomAgentLoadout` — amalgm-ui/lib/customAgents.ts:31-34
|
|
12
|
-
* - `InstalledSkillSource` — amalgm-ui/lib/skills/types.ts:1-12
|
|
13
|
-
* - `AgentConfig*` — amalgm-ui/lib/agent-config/types.ts:3-48
|
|
14
|
-
*/
|
|
15
|
-
export type HarnessId = "claude_code" | "opencode" | "codex" | "pi" | "amp" | "cursor";
|
|
16
|
-
export type AuthMethod = "amalgm" | "byok" | "provider_auth";
|
|
17
|
-
export type CliEffort = 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'ultra';
|
|
18
|
-
export type ModelCliSettings = {
|
|
19
|
-
/** Canonical CLI/SDK effort value. Claude supports max; Codex stops at xhigh. */
|
|
20
|
-
effort?: CliEffort;
|
|
21
|
-
/** Harness-level faster inference toggle. Claude maps this to settings; Codex maps it to service tier. */
|
|
22
|
-
fastMode?: boolean;
|
|
23
|
-
};
|
|
24
|
-
export interface CustomAgentLoadout {
|
|
25
|
-
/** Toolbox tool IDs connected to this agent. */
|
|
26
|
-
toolIds: string[];
|
|
27
|
-
}
|
|
28
|
-
export type InstalledSkillSource = {
|
|
29
|
-
kind?: string;
|
|
30
|
-
provider?: string;
|
|
31
|
-
scope?: string;
|
|
32
|
-
rootLabel?: string;
|
|
33
|
-
path?: string;
|
|
34
|
-
directoryPath?: string;
|
|
35
|
-
resolvedPath?: string;
|
|
36
|
-
resolvedDirectoryPath?: string;
|
|
37
|
-
rootPath?: string;
|
|
38
|
-
viaSymlink?: boolean;
|
|
39
|
-
};
|
|
40
|
-
export type AgentConfigLoadout = {
|
|
41
|
-
toolIds: string[];
|
|
42
|
-
};
|
|
43
|
-
export type AgentConfigSkill = {
|
|
44
|
-
id: string;
|
|
45
|
-
name: string;
|
|
46
|
-
description?: string;
|
|
47
|
-
content?: string;
|
|
48
|
-
enabled?: boolean;
|
|
49
|
-
source?: InstalledSkillSource;
|
|
50
|
-
};
|
|
51
|
-
export type AgentConfigHook = {
|
|
52
|
-
id: string;
|
|
53
|
-
name: string;
|
|
54
|
-
enabled?: boolean;
|
|
55
|
-
event: string;
|
|
56
|
-
phase: string;
|
|
57
|
-
matcher?: string;
|
|
58
|
-
type: 'command' | string;
|
|
59
|
-
command?: string;
|
|
60
|
-
timeout?: number;
|
|
61
|
-
statusMessage?: string;
|
|
62
|
-
source?: Record<string, unknown>;
|
|
63
|
-
};
|
|
64
|
-
export type AgentConfigSubagent = {
|
|
65
|
-
id: string;
|
|
66
|
-
agentId: string;
|
|
67
|
-
name?: string;
|
|
68
|
-
description?: string;
|
|
69
|
-
enabled?: boolean;
|
|
70
|
-
source?: Record<string, unknown>;
|
|
71
|
-
};
|
|
72
|
-
export type AgentConfig = {
|
|
73
|
-
version: 1;
|
|
74
|
-
agentId?: string;
|
|
75
|
-
runtimeHomeLayout?: 'legacy' | 'per-agent';
|
|
76
|
-
instructions: string;
|
|
77
|
-
skills: AgentConfigSkill[];
|
|
78
|
-
loadout: AgentConfigLoadout;
|
|
79
|
-
hooks: AgentConfigHook[];
|
|
80
|
-
subagents: AgentConfigSubagent[];
|
|
81
|
-
};
|
|
82
|
-
export type ChatPayloadAgentConfigSnapshot = {
|
|
83
|
-
agentId: string;
|
|
84
|
-
revision: string;
|
|
85
|
-
config: AgentConfig;
|
|
86
|
-
compiledInstructions: string;
|
|
87
|
-
};
|
|
88
|
-
export type ChatViewPayload = {
|
|
89
|
-
machineId: string | null;
|
|
90
|
-
harness: string;
|
|
91
|
-
resolvedHarnessId: HarnessId;
|
|
92
|
-
modelId: string;
|
|
93
|
-
modelSettings: ModelCliSettings;
|
|
94
|
-
authMethod: AuthMethod;
|
|
95
|
-
cwd: string | null;
|
|
96
|
-
customAgentId: string | null;
|
|
97
|
-
systemPrompt: string | null;
|
|
98
|
-
agentConfigSnapshot?: ChatPayloadAgentConfigSnapshot | null;
|
|
99
|
-
mcpAppIds: string[];
|
|
100
|
-
loadout?: CustomAgentLoadout;
|
|
101
|
-
pendingWorktree: boolean;
|
|
102
|
-
};
|
|
103
|
-
export type SessionStableChatViewPayload = Pick<ChatViewPayload, 'machineId' | 'harness' | 'resolvedHarnessId' | 'authMethod' | 'cwd' | 'customAgentId' | 'systemPrompt' | 'agentConfigSnapshot'>;
|
|
104
|
-
export type LaunchEnvelopeRequest = {
|
|
105
|
-
chatPayloadId?: string | null;
|
|
106
|
-
chatPayloadRevision?: string | null;
|
|
107
|
-
chatInput: {
|
|
108
|
-
parts: [];
|
|
109
|
-
agent: {
|
|
110
|
-
harness: string;
|
|
111
|
-
model: string;
|
|
112
|
-
authMethod: AuthMethod;
|
|
113
|
-
customAgentId: string | null;
|
|
114
|
-
systemPrompt: string | null;
|
|
115
|
-
};
|
|
116
|
-
tools: {
|
|
117
|
-
mcpAppIds: string[];
|
|
118
|
-
toolIds: string[];
|
|
119
|
-
};
|
|
120
|
-
execution: {
|
|
121
|
-
cwd: string | null;
|
|
122
|
-
computerId: string | null;
|
|
123
|
-
};
|
|
124
|
-
};
|
|
125
|
-
modelSettings?: ModelCliSettings;
|
|
126
|
-
agentConfigId?: string;
|
|
127
|
-
agentConfig?: AgentConfig;
|
|
128
|
-
compiledAgentInstructions?: string;
|
|
129
|
-
};
|
|
130
|
-
export declare function stableJson(value: unknown): string;
|
|
131
|
-
export declare function getSessionStableChatViewPayload(payload: ChatViewPayload): SessionStableChatViewPayload;
|
|
132
|
-
export declare function mergeSessionStableChatViewPayload(payload: ChatViewPayload, sessionStablePayload?: SessionStableChatViewPayload | null): ChatViewPayload;
|
|
133
|
-
export declare function buildLaunchEnvelopeRequest(payload: ChatViewPayload, machinePayload?: {
|
|
134
|
-
payloadId?: string | null;
|
|
135
|
-
revision?: string | null;
|
|
136
|
-
}): LaunchEnvelopeRequest | null;
|
|
137
|
-
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/warm/payload.ts"],"names":[],"mappings":"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"}
|
package/dist/warm/payload.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Warm-payload shapes and the stable-JSON / session-freeze / envelope-request
|
|
3
|
-
* laws — `amalgm-ui/lib/chat/payload.ts`, ported byte-exact.
|
|
4
|
-
*
|
|
5
|
-
* Design doc: docs/warm-payloads.md (Layer A shape + freeze interaction).
|
|
6
|
-
*
|
|
7
|
-
* The UI file imports its field types from elsewhere in amalgm-ui; those
|
|
8
|
-
* types are mirrored here verbatim so the SDK stands alone:
|
|
9
|
-
* - `HarnessId`, `AuthMethod` — amalgm-ui/lib/harnesses.ts:26,30
|
|
10
|
-
* - `CliEffort`, `ModelCliSettings` — amalgm-ui/lib/modelSettings.ts:4-11
|
|
11
|
-
* - `CustomAgentLoadout` — amalgm-ui/lib/customAgents.ts:31-34
|
|
12
|
-
* - `InstalledSkillSource` — amalgm-ui/lib/skills/types.ts:1-12
|
|
13
|
-
* - `AgentConfig*` — amalgm-ui/lib/agent-config/types.ts:3-48
|
|
14
|
-
*/
|
|
15
|
-
function stableJsonValue(value, arrayItem = false) {
|
|
16
|
-
if (value === undefined || typeof value === 'function' || typeof value === 'symbol') {
|
|
17
|
-
return arrayItem ? 'null' : undefined;
|
|
18
|
-
}
|
|
19
|
-
if (Array.isArray(value)) {
|
|
20
|
-
return `[${value.map((item) => stableJsonValue(item, true) ?? 'null').join(',')}]`;
|
|
21
|
-
}
|
|
22
|
-
if (!value || typeof value !== 'object') {
|
|
23
|
-
return JSON.stringify(value);
|
|
24
|
-
}
|
|
25
|
-
const input = value;
|
|
26
|
-
return `{${Object.keys(input)
|
|
27
|
-
.sort()
|
|
28
|
-
.flatMap((key) => {
|
|
29
|
-
const serialized = stableJsonValue(input[key]);
|
|
30
|
-
return serialized === undefined ? [] : `${JSON.stringify(key)}:${serialized}`;
|
|
31
|
-
})
|
|
32
|
-
.join(',')}}`;
|
|
33
|
-
}
|
|
34
|
-
export function stableJson(value) {
|
|
35
|
-
return stableJsonValue(value) ?? 'null';
|
|
36
|
-
}
|
|
37
|
-
export function getSessionStableChatViewPayload(payload) {
|
|
38
|
-
return {
|
|
39
|
-
machineId: payload.machineId,
|
|
40
|
-
harness: payload.harness,
|
|
41
|
-
resolvedHarnessId: payload.resolvedHarnessId,
|
|
42
|
-
authMethod: payload.authMethod,
|
|
43
|
-
cwd: payload.cwd,
|
|
44
|
-
customAgentId: payload.customAgentId,
|
|
45
|
-
systemPrompt: payload.systemPrompt,
|
|
46
|
-
agentConfigSnapshot: payload.agentConfigSnapshot ?? null,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
export function mergeSessionStableChatViewPayload(payload, sessionStablePayload) {
|
|
50
|
-
if (!sessionStablePayload)
|
|
51
|
-
return payload;
|
|
52
|
-
return {
|
|
53
|
-
...payload,
|
|
54
|
-
...sessionStablePayload,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
export function buildLaunchEnvelopeRequest(payload, machinePayload) {
|
|
58
|
-
if (payload.pendingWorktree)
|
|
59
|
-
return null;
|
|
60
|
-
if (machinePayload?.payloadId) {
|
|
61
|
-
return {
|
|
62
|
-
chatPayloadId: machinePayload.payloadId,
|
|
63
|
-
chatPayloadRevision: machinePayload.revision ?? null,
|
|
64
|
-
chatInput: {
|
|
65
|
-
parts: [],
|
|
66
|
-
agent: {
|
|
67
|
-
harness: payload.harness,
|
|
68
|
-
model: payload.modelId,
|
|
69
|
-
authMethod: payload.authMethod,
|
|
70
|
-
customAgentId: payload.customAgentId,
|
|
71
|
-
systemPrompt: null,
|
|
72
|
-
},
|
|
73
|
-
tools: {
|
|
74
|
-
mcpAppIds: [],
|
|
75
|
-
toolIds: payload.loadout?.toolIds ?? [],
|
|
76
|
-
},
|
|
77
|
-
execution: {
|
|
78
|
-
cwd: null,
|
|
79
|
-
computerId: payload.machineId,
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
const agentConfigSnapshot = payload.agentConfigSnapshot ?? null;
|
|
85
|
-
return {
|
|
86
|
-
chatInput: {
|
|
87
|
-
parts: [],
|
|
88
|
-
agent: {
|
|
89
|
-
harness: payload.harness,
|
|
90
|
-
model: payload.modelId,
|
|
91
|
-
authMethod: payload.authMethod,
|
|
92
|
-
customAgentId: payload.customAgentId,
|
|
93
|
-
systemPrompt: payload.systemPrompt,
|
|
94
|
-
},
|
|
95
|
-
tools: {
|
|
96
|
-
mcpAppIds: payload.mcpAppIds,
|
|
97
|
-
toolIds: payload.loadout?.toolIds ?? [],
|
|
98
|
-
},
|
|
99
|
-
execution: {
|
|
100
|
-
cwd: payload.cwd,
|
|
101
|
-
computerId: payload.machineId,
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
modelSettings: payload.modelSettings,
|
|
105
|
-
...(agentConfigSnapshot ? {
|
|
106
|
-
agentConfigId: agentConfigSnapshot.agentId,
|
|
107
|
-
agentConfig: agentConfigSnapshot.config,
|
|
108
|
-
compiledAgentInstructions: agentConfigSnapshot.compiledInstructions,
|
|
109
|
-
} : {}),
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=payload.js.map
|
package/dist/warm/payload.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/warm/payload.ts"],"names":[],"mappings":"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"}
|
package/dist/warm/revision.d.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Revision hash + client publish-dedupe policy — the pure laws of
|
|
3
|
-
* `amalgm-ui/lib/chat/machinePayloadClient.ts` (:7-51 and the decision
|
|
4
|
-
* sequence of `publishMachineChatPayload`, :61-71).
|
|
5
|
-
*
|
|
6
|
-
* Design doc: docs/warm-payloads.md ("Revision law").
|
|
7
|
-
*
|
|
8
|
-
* Note: the revision is NOT sha256 — the UI uses a djb2-xor string hash
|
|
9
|
-
* rendered base-36 (`machinePayloadClient.ts:41-47`), ported byte-exact
|
|
10
|
-
* below, so no Sha256HexPort is needed here. The maps themselves
|
|
11
|
-
* (in-flight promises, confirmed writes) and the fetch are host state;
|
|
12
|
-
* this module exports only the shapes, constants, and decision laws.
|
|
13
|
-
*/
|
|
14
|
-
import type { ChatViewPayload } from './payload.js';
|
|
15
|
-
/** Store record shape as the client sees it — `machinePayloadClient.ts:7-12`. */
|
|
16
|
-
export type MachineChatPayloadRecord = {
|
|
17
|
-
id: string;
|
|
18
|
-
revision: string;
|
|
19
|
-
payload: ChatViewPayload;
|
|
20
|
-
updatedAt?: string;
|
|
21
|
-
};
|
|
22
|
-
/** In-flight write memory, per (machine, payload) key — `machinePayloadClient.ts:17-22`. */
|
|
23
|
-
export type PendingMachinePayloadWrite = {
|
|
24
|
-
revision: string;
|
|
25
|
-
};
|
|
26
|
-
export type ConfirmedMachinePayloadWrite = {
|
|
27
|
-
revision: string;
|
|
28
|
-
at: number;
|
|
29
|
-
};
|
|
30
|
-
/** `machinePayloadClient.ts:35` — confirmed-write memory lives 10 minutes. */
|
|
31
|
-
export declare const CONFIRMED_WRITE_TTL_MS: number;
|
|
32
|
-
/** Dedupe-map key law — `machinePayloadClient.ts:37-39`. */
|
|
33
|
-
export declare function machinePayloadWriteKey(machineId: string | null | undefined, payloadId: string): string;
|
|
34
|
-
/**
|
|
35
|
-
* Revision law: revision = hash of the stable JSON of the payload
|
|
36
|
-
* (`machinePayloadClient.ts:49-51`; callers feed it `stableJson(payload)`).
|
|
37
|
-
*/
|
|
38
|
-
export declare function chatPayloadRevision(payloadJson: string): string;
|
|
39
|
-
/**
|
|
40
|
-
* Is a confirmed-write memory entry still fresh? — the guard at
|
|
41
|
-
* `machinePayloadClient.ts:69` (`Date.now() - confirmed.at < TTL`), with
|
|
42
|
-
* the clock injected.
|
|
43
|
-
*/
|
|
44
|
-
export declare function isConfirmedWriteFresh(confirmed: ConfirmedMachinePayloadWrite | null | undefined, nowMs: number): boolean;
|
|
45
|
-
export type MachinePayloadPublishDecision =
|
|
46
|
-
/** No payload id — nothing to publish (`:61`). */
|
|
47
|
-
'skip-no-payload-id'
|
|
48
|
-
/** The live state stream already committed this revision (`:62`). */
|
|
49
|
-
| 'skip-committed'
|
|
50
|
-
/** An identical write is already in flight — join its promise (`:65-66`). */
|
|
51
|
-
| 'join-pending'
|
|
52
|
-
/** The server confirmed this revision within the TTL (`:68-71`). */
|
|
53
|
-
| 'skip-confirmed'
|
|
54
|
-
/** Issue the PUT. */
|
|
55
|
-
| 'publish';
|
|
56
|
-
/**
|
|
57
|
-
* The publish-dedupe decision sequence of `publishMachineChatPayload`
|
|
58
|
-
* (`machinePayloadClient.ts:61-71`), as a pure function. The caller looks up
|
|
59
|
-
* `pending`/`confirmed` from its own maps under `machinePayloadWriteKey` and
|
|
60
|
-
* acts on the verdict; map mutation and the fetch stay host.
|
|
61
|
-
*/
|
|
62
|
-
export declare function machinePayloadPublishDecision(args: {
|
|
63
|
-
payloadId: string | null;
|
|
64
|
-
revision: string;
|
|
65
|
-
committedRevision?: string | null;
|
|
66
|
-
pending?: PendingMachinePayloadWrite | null;
|
|
67
|
-
confirmed?: ConfirmedMachinePayloadWrite | null;
|
|
68
|
-
nowMs: number;
|
|
69
|
-
}): MachinePayloadPublishDecision;
|
|
70
|
-
//# sourceMappingURL=revision.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revision.d.ts","sourceRoot":"","sources":["../../src/warm/revision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,iFAAiF;AACjF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,4FAA4F;AAC5F,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAOF,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AAErD,4DAA4D;AAC5D,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtG;AAUD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,EAC1D,KAAK,EAAE,MAAM,GACZ,OAAO,CAGT;AAED,MAAM,MAAM,6BAA6B;AACvC,kDAAkD;AAChD,oBAAoB;AACtB,qEAAqE;GACnE,gBAAgB;AAClB,6EAA6E;GAC3E,cAAc;AAChB,oEAAoE;GAClE,gBAAgB;AAClB,qBAAqB;GACnB,SAAS,CAAC;AAEd;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,6BAA6B,CAShC"}
|
package/dist/warm/revision.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Revision hash + client publish-dedupe policy — the pure laws of
|
|
3
|
-
* `amalgm-ui/lib/chat/machinePayloadClient.ts` (:7-51 and the decision
|
|
4
|
-
* sequence of `publishMachineChatPayload`, :61-71).
|
|
5
|
-
*
|
|
6
|
-
* Design doc: docs/warm-payloads.md ("Revision law").
|
|
7
|
-
*
|
|
8
|
-
* Note: the revision is NOT sha256 — the UI uses a djb2-xor string hash
|
|
9
|
-
* rendered base-36 (`machinePayloadClient.ts:41-47`), ported byte-exact
|
|
10
|
-
* below, so no Sha256HexPort is needed here. The maps themselves
|
|
11
|
-
* (in-flight promises, confirmed writes) and the fetch are host state;
|
|
12
|
-
* this module exports only the shapes, constants, and decision laws.
|
|
13
|
-
*/
|
|
14
|
-
/** `machinePayloadClient.ts:35` — confirmed-write memory lives 10 minutes. */
|
|
15
|
-
export const CONFIRMED_WRITE_TTL_MS = 10 * 60 * 1000;
|
|
16
|
-
/** Dedupe-map key law — `machinePayloadClient.ts:37-39`. */
|
|
17
|
-
export function machinePayloadWriteKey(machineId, payloadId) {
|
|
18
|
-
return `${machineId?.trim() || '__default__'}\0${payloadId}`;
|
|
19
|
-
}
|
|
20
|
-
function hashString(input) {
|
|
21
|
-
let hash = 5381;
|
|
22
|
-
for (let index = 0; index < input.length; index += 1) {
|
|
23
|
-
hash = ((hash << 5) + hash) ^ input.charCodeAt(index);
|
|
24
|
-
}
|
|
25
|
-
return (hash >>> 0).toString(36);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Revision law: revision = hash of the stable JSON of the payload
|
|
29
|
-
* (`machinePayloadClient.ts:49-51`; callers feed it `stableJson(payload)`).
|
|
30
|
-
*/
|
|
31
|
-
export function chatPayloadRevision(payloadJson) {
|
|
32
|
-
return hashString(payloadJson);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Is a confirmed-write memory entry still fresh? — the guard at
|
|
36
|
-
* `machinePayloadClient.ts:69` (`Date.now() - confirmed.at < TTL`), with
|
|
37
|
-
* the clock injected.
|
|
38
|
-
*/
|
|
39
|
-
export function isConfirmedWriteFresh(confirmed, nowMs) {
|
|
40
|
-
if (!confirmed)
|
|
41
|
-
return false;
|
|
42
|
-
return nowMs - confirmed.at < CONFIRMED_WRITE_TTL_MS;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* The publish-dedupe decision sequence of `publishMachineChatPayload`
|
|
46
|
-
* (`machinePayloadClient.ts:61-71`), as a pure function. The caller looks up
|
|
47
|
-
* `pending`/`confirmed` from its own maps under `machinePayloadWriteKey` and
|
|
48
|
-
* acts on the verdict; map mutation and the fetch stay host.
|
|
49
|
-
*/
|
|
50
|
-
export function machinePayloadPublishDecision(args) {
|
|
51
|
-
const { payloadId, revision, committedRevision, pending, confirmed, nowMs } = args;
|
|
52
|
-
if (!payloadId)
|
|
53
|
-
return 'skip-no-payload-id';
|
|
54
|
-
if (committedRevision === revision)
|
|
55
|
-
return 'skip-committed';
|
|
56
|
-
if (pending?.revision === revision)
|
|
57
|
-
return 'join-pending';
|
|
58
|
-
if (confirmed?.revision === revision && isConfirmedWriteFresh(confirmed, nowMs)) {
|
|
59
|
-
return 'skip-confirmed';
|
|
60
|
-
}
|
|
61
|
-
return 'publish';
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=revision.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revision.js","sourceRoot":"","sources":["../../src/warm/revision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA2BH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAErD,4DAA4D;AAC5D,MAAM,UAAU,sBAAsB,CAAC,SAAoC,EAAE,SAAiB;IAC5F,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAA0D,EAC1D,KAAa;IAEb,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,OAAO,KAAK,GAAG,SAAS,CAAC,EAAE,GAAG,sBAAsB,CAAC;AACvD,CAAC;AAcD;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAO7C;IACC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACnF,IAAI,CAAC,SAAS;QAAE,OAAO,oBAAoB,CAAC;IAC5C,IAAI,iBAAiB,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC;IAC5D,IAAI,OAAO,EAAE,QAAQ,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC;IAC1D,IAAI,SAAS,EAAE,QAAQ,KAAK,QAAQ,IAAI,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;QAChF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Machine-side chat-payload store policy — the pure laws of engine
|
|
3
|
-
* `runtime/scripts/amalgm-mcp/lib/chat-payloads.js` (CJS). SQLite
|
|
4
|
-
* (`local_meta` key `chat_payloads`), the transaction, and state-event
|
|
5
|
-
* emission stay host; this module owns the record shape, normalization,
|
|
6
|
-
* the TTL/cap constants, and the GC sweep decision.
|
|
7
|
-
*/
|
|
8
|
-
import type { ClockIsoPort } from '../ports.js';
|
|
9
|
-
/** `chat-payloads.js:6-7` — store key and state-event resource name. */
|
|
10
|
-
export declare const CHAT_PAYLOADS_META_KEY = "chat_payloads";
|
|
11
|
-
export declare const CHAT_PAYLOADS_RESOURCE = "chat_payloads";
|
|
12
|
-
export declare const CHAT_PAYLOAD_TTL_MS: number;
|
|
13
|
-
export declare const CHAT_PAYLOAD_MAX_RECORDS = 300;
|
|
14
|
-
/** Stored record shape — `chat-payloads.js:54-59`. Payload is untyped JSON machine-side. */
|
|
15
|
-
export type ChatPayloadStoreRecord = {
|
|
16
|
-
id: string;
|
|
17
|
-
revision: string;
|
|
18
|
-
payload: Record<string, unknown>;
|
|
19
|
-
updatedAt: string;
|
|
20
|
-
};
|
|
21
|
-
/** `chat-payloads.js:17-19`. */
|
|
22
|
-
export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
|
|
23
|
-
/** `chat-payloads.js:21-23`. */
|
|
24
|
-
export declare function cleanString(value: unknown): string | null;
|
|
25
|
-
/**
|
|
26
|
-
* Record normalization law — `chat-payloads.js:42-60`: id required (from
|
|
27
|
-
* `id`/`payloadId`/existing), payload required (from body else existing),
|
|
28
|
-
* revision falls back through `revision`/`payloadRevision`/existing to
|
|
29
|
-
* `'unknown'`, and `updatedAt` is stamped now (the engine's
|
|
30
|
-
* `new Date().toISOString()`, injected as `clockIso`).
|
|
31
|
-
*/
|
|
32
|
-
export declare function normalizeChatPayloadRecord(input: unknown, existing: ChatPayloadStoreRecord | null, clockIso: ClockIsoPort): ChatPayloadStoreRecord;
|
|
33
|
-
/**
|
|
34
|
-
* `chat-payloads.js:62-65` — unparseable/absent updatedAt sorts as epoch 0.
|
|
35
|
-
* `Date.parse` here is a deterministic string parser, not a clock read —
|
|
36
|
-
* the purity axiom (src/ports.ts) bans ambient time/entropy, and the
|
|
37
|
-
* engine's law is defined in terms of `Date.parse` itself. `String(...)`
|
|
38
|
-
* mirrors the ToString coercion `Date.parse` applies to the engine's
|
|
39
|
-
* `record?.updatedAt || ''` argument.
|
|
40
|
-
*/
|
|
41
|
-
export declare function recordTimestamp(record: {
|
|
42
|
-
updatedAt?: unknown;
|
|
43
|
-
} | null | undefined): number;
|
|
44
|
-
/**
|
|
45
|
-
* GC sweep decision — the pure core of `sweepChatPayloadsOnce`
|
|
46
|
-
* (`chat-payloads.js:67-100`, the transaction body :74-86): keep only
|
|
47
|
-
* plain records with a non-blank id whose timestamp is on or after
|
|
48
|
-
* `now - 7d`; if more than 300 survive, keep the newest 300 by
|
|
49
|
-
* `updatedAt`. `changed === false` means the sweep writes nothing (the
|
|
50
|
-
* engine returns null and skips the SQLite UPDATE + state event). The
|
|
51
|
-
* once-per-process latch, the write, and the event stay host.
|
|
52
|
-
*/
|
|
53
|
-
export declare function sweepChatPayloads(current: Record<string, unknown>, nowMs: number): {
|
|
54
|
-
changed: boolean;
|
|
55
|
-
next: Record<string, ChatPayloadStoreRecord>;
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=store-policy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-policy.d.ts","sourceRoot":"","sources":["../../src/warm/store-policy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wEAAwE;AACxE,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AAMtD,eAAO,MAAM,mBAAmB,QAA0B,CAAC;AAC3D,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,4FAA4F;AAC5F,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE9E;AAED,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEzD;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,sBAAsB,GAAG,IAAI,EACvC,QAAQ,EAAE,YAAY,GACrB,sBAAsB,CAkBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,GACZ;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;CAAE,CAgBpE"}
|