@plurnk/plurnk-service 2.0.0 → 3.0.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/.env.defaults +11 -15
- package/INSTALL.md +3 -2
- package/README.md +1 -2
- package/SPEC.md +329 -320
- package/dist/build-info.json +1 -1
- package/dist/content/edit-receipt.d.ts +1 -1
- package/dist/content/edit-receipt.d.ts.map +1 -1
- package/dist/content/edit-receipt.js +1 -1
- package/dist/content/edit-receipt.js.map +1 -1
- package/dist/content/read-projector.d.ts.map +1 -1
- package/dist/content/read-projector.js +3 -12
- package/dist/content/read-projector.js.map +1 -1
- package/dist/core/AdministrativeLoop.d.ts +1 -1
- package/dist/core/AdministrativeLoop.d.ts.map +1 -1
- package/dist/core/AdministrativeLoop.js +2 -6
- package/dist/core/AdministrativeLoop.js.map +1 -1
- package/dist/core/BudgetReadout.d.ts +1 -0
- package/dist/core/BudgetReadout.d.ts.map +1 -1
- package/dist/core/BudgetReadout.js +12 -0
- package/dist/core/BudgetReadout.js.map +1 -1
- package/dist/core/CapabilityPolicies.d.ts +2 -4
- package/dist/core/CapabilityPolicies.d.ts.map +1 -1
- package/dist/core/CapabilityPolicies.js +3 -23
- package/dist/core/CapabilityPolicies.js.map +1 -1
- package/dist/core/CapabilityResolver.d.ts +9 -2
- package/dist/core/CapabilityResolver.d.ts.map +1 -1
- package/dist/core/CapabilityResolver.js +34 -5
- package/dist/core/CapabilityResolver.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +0 -2
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ClientInteractions.d.ts +3 -2
- package/dist/core/ClientInteractions.d.ts.map +1 -1
- package/dist/core/ClientInteractions.js +21 -12
- package/dist/core/ClientInteractions.js.map +1 -1
- package/dist/core/ClientInteractions.sql +8 -2
- package/dist/core/CoreSchemeServices.d.ts +1 -0
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js +1 -0
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/DataStatementRunner.js +1 -1
- package/dist/core/DataStatementRunner.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +1 -0
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +12 -13
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Engine.d.ts +1 -1
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +3 -2
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/EnvFlags.d.ts.map +1 -1
- package/dist/core/EnvFlags.js +4 -3
- package/dist/core/EnvFlags.js.map +1 -1
- package/dist/core/FabricatedLog.js +1 -1
- package/dist/core/FabricatedLog.js.map +1 -1
- package/dist/core/HostPaths.d.ts +0 -1
- package/dist/core/HostPaths.d.ts.map +1 -1
- package/dist/core/HostPaths.js +0 -2
- package/dist/core/HostPaths.js.map +1 -1
- package/dist/core/KillHandler.js +1 -1
- package/dist/core/KillHandler.js.map +1 -1
- package/dist/core/LogVisibility.d.ts.map +1 -1
- package/dist/core/LogVisibility.js +8 -17
- package/dist/core/LogVisibility.js.map +1 -1
- package/dist/core/LoopDriver.d.ts.map +1 -1
- package/dist/core/LoopDriver.js +4 -6
- package/dist/core/LoopDriver.js.map +1 -1
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +4 -9
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +6 -6
- package/dist/core/OperatorConfig.d.ts +1 -0
- package/dist/core/OperatorConfig.d.ts.map +1 -1
- package/dist/core/OperatorConfig.js +10 -2
- package/dist/core/OperatorConfig.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts +5 -7
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +48 -118
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/PacketBuilder.sql +15 -0
- package/dist/core/ProposalLifecycle.d.ts +1 -1
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +18 -20
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ProposalPolicies.d.ts +6 -0
- package/dist/core/ProposalPolicies.d.ts.map +1 -0
- package/dist/core/ProposalPolicies.js +28 -0
- package/dist/core/ProposalPolicies.js.map +1 -0
- package/dist/core/ProviderInstantiate.d.ts.map +1 -1
- package/dist/core/ProviderInstantiate.js +3 -4
- package/dist/core/ProviderInstantiate.js.map +1 -1
- package/dist/core/ResourceSelector.js +2 -2
- package/dist/core/ResourceSelector.js.map +1 -1
- package/dist/core/ResourceTransfers.js +3 -3
- package/dist/core/ResourceTransfers.js.map +1 -1
- package/dist/core/RuntimeWorker.sql +1 -2
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +4 -5
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/ToolInputSchema.d.ts +1 -0
- package/dist/core/ToolInputSchema.d.ts.map +1 -1
- package/dist/core/ToolInputSchema.js +8 -2
- package/dist/core/ToolInputSchema.js.map +1 -1
- package/dist/core/ToolResources.d.ts +1 -0
- package/dist/core/ToolResources.d.ts.map +1 -1
- package/dist/core/ToolResources.js +7 -1
- package/dist/core/ToolResources.js.map +1 -1
- package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
- package/dist/core/TurnDispositionHandler.js +1 -7
- package/dist/core/TurnDispositionHandler.js.map +1 -1
- package/dist/core/TurnMaterialization.js +1 -1
- package/dist/core/TurnMaterialization.js.map +1 -1
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +74 -57
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/WorkerControlHandler.d.ts.map +1 -1
- package/dist/core/WorkerControlHandler.js +1 -8
- package/dist/core/WorkerControlHandler.js.map +1 -1
- package/dist/core/WorkerName.d.ts +1 -0
- package/dist/core/WorkerName.d.ts.map +1 -1
- package/dist/core/WorkerName.js +2 -0
- package/dist/core/WorkerName.js.map +1 -1
- package/dist/core/WorkerName.sql +2 -2
- package/dist/core/WorkerOwners.d.ts +13 -0
- package/dist/core/WorkerOwners.d.ts.map +1 -0
- package/dist/core/WorkerOwners.js +44 -0
- package/dist/core/WorkerOwners.js.map +1 -0
- package/dist/core/WorkerOwners.sql +55 -0
- package/dist/core/env-catalog.d.ts +3 -0
- package/dist/core/env-catalog.d.ts.map +1 -1
- package/dist/core/env-catalog.js +44 -9
- package/dist/core/env-catalog.js.map +1 -1
- package/dist/core/fork.sql +3 -4
- package/dist/core/packet-inject.js +0 -2
- package/dist/core/packet-inject.js.map +1 -1
- package/dist/core/packet-wire.d.ts +2 -10
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +31 -114
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plurnk-uri.d.ts +1 -1
- package/dist/core/plurnk-uri.d.ts.map +1 -1
- package/dist/core/plurnk-uri.js +4 -4
- package/dist/core/plurnk-uri.js.map +1 -1
- package/dist/core/scheme-types.d.ts +2 -1
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/types.d.ts +0 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/unregistered-scheme.d.ts +1 -3
- package/dist/core/unregistered-scheme.d.ts.map +1 -1
- package/dist/core/unregistered-scheme.js +3 -11
- package/dist/core/unregistered-scheme.js.map +1 -1
- package/dist/evidence/EvidenceReader.d.ts.map +1 -1
- package/dist/evidence/EvidenceReader.js +4 -1
- package/dist/evidence/EvidenceReader.js.map +1 -1
- package/dist/evidence/digest.sql +1 -2
- package/dist/schemes/EffectPolicy.d.ts.map +1 -1
- package/dist/schemes/EffectPolicy.js +1 -10
- package/dist/schemes/EffectPolicy.js.map +1 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +16 -23
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +10 -16
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/QuestionTool.d.ts.map +1 -1
- package/dist/schemes/QuestionTool.js +1 -3
- package/dist/schemes/QuestionTool.js.map +1 -1
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +6 -8
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-fts.d.ts.map +1 -1
- package/dist/schemes/_entry-fts.js +3 -9
- package/dist/schemes/_entry-fts.js.map +1 -1
- package/dist/schemes/_entry-ops.js +1 -1
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/server/ConfigurationDiagnostics.d.ts +1 -0
- package/dist/server/ConfigurationDiagnostics.d.ts.map +1 -1
- package/dist/server/ConfigurationDiagnostics.js +9 -0
- package/dist/server/ConfigurationDiagnostics.js.map +1 -1
- package/dist/server/Daemon.d.ts +12 -8
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +51 -52
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DrainSupervisor.d.ts +1 -4
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +1 -11
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/EnvFunctionality.d.ts +2 -4
- package/dist/server/EnvFunctionality.d.ts.map +1 -1
- package/dist/server/EnvFunctionality.js +3 -5
- package/dist/server/EnvFunctionality.js.map +1 -1
- package/dist/server/Functionality.d.ts.map +1 -1
- package/dist/server/Functionality.js +42 -13
- package/dist/server/Functionality.js.map +1 -1
- package/dist/server/FunctionalityManager.d.ts +3 -4
- package/dist/server/FunctionalityManager.d.ts.map +1 -1
- package/dist/server/FunctionalityManager.js +17 -9
- package/dist/server/FunctionalityManager.js.map +1 -1
- package/dist/server/HttpListener.d.ts.map +1 -1
- package/dist/server/HttpListener.js +9 -3
- package/dist/server/HttpListener.js.map +1 -1
- package/dist/server/MembersFunctionality.d.ts +2 -5
- package/dist/server/MembersFunctionality.d.ts.map +1 -1
- package/dist/server/MembersFunctionality.js +5 -3
- package/dist/server/MembersFunctionality.js.map +1 -1
- package/dist/server/WorkspaceStorage.d.ts +0 -1
- package/dist/server/WorkspaceStorage.d.ts.map +1 -1
- package/dist/server/WorkspaceStorage.js +1 -24
- package/dist/server/WorkspaceStorage.js.map +1 -1
- package/dist/server/client-input.d.ts +1 -2
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +2 -13
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/dispatch-as-plurnk.js +1 -1
- package/dist/server/dispatch-as-plurnk.js.map +1 -1
- package/dist/server/drain.sql +6 -6
- package/dist/server/envelope.d.ts +2 -1
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +7 -17
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +5 -5
- package/dist/server/seam-proposal-list.sql +6 -4
- package/dist/server/workspace-storage.sql +0 -5
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +23 -33
- package/dist/service.js.map +1 -1
- package/migrations/003_loops.sql +2 -2
- package/migrations/006_log.sql +1 -1
- package/migrations/016_selection_statements.sql +1 -0
- package/migrations/017_skills_module.sql +1 -0
- package/migrations/018_worker_owners.sql +102 -0
- package/migrations/019_interactive_owners.sql +6 -0
- package/migrations/020_log_projection.sql +143 -0
- package/package.json +37 -41
- package/dist/core/LegacyHome.d.ts +0 -10
- package/dist/core/LegacyHome.d.ts.map +0 -1
- package/dist/core/LegacyHome.js +0 -170
- package/dist/core/LegacyHome.js.map +0 -1
- package/dist/core/LoopPolicies.d.ts +0 -7
- package/dist/core/LoopPolicies.d.ts.map +0 -1
- package/dist/core/LoopPolicies.js +0 -42
- package/dist/core/LoopPolicies.js.map +0 -1
- package/dist/core/LoopPolicyReader.d.ts +0 -7
- package/dist/core/LoopPolicyReader.d.ts.map +0 -1
- package/dist/core/LoopPolicyReader.js +0 -33
- package/dist/core/LoopPolicyReader.js.map +0 -1
- package/dist/core/LoopPolicyReader.sql +0 -6
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -21
- package/dist/index.js.map +0 -1
package/dist/core/env-catalog.js
CHANGED
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
// including names nothing declares. The catalog answers a different question — which keys have a
|
|
11
11
|
// CONSUMER. `FOO=bar` is valid and nothing reads it; `PAGER=less` is valid and something does.
|
|
12
12
|
import EnvDefaults from "./env-defaults.js";
|
|
13
|
+
// A declaration line: `KEY=value` is live, `# KEY=value` optional. A `<placeholder>` segment in the
|
|
14
|
+
// name declares a family of keys ({§operator-config-undeclared-key}), only ever written commented.
|
|
15
|
+
const DECLARATION = /^#?\s*([A-Za-z_][A-Za-z0-9_]*(?:<[^<>\s=]+>[A-Za-z0-9_]*)*)=/u;
|
|
16
|
+
const PLACEHOLDER = /<[^<>\s=]+>/gu;
|
|
17
|
+
// What a placeholder, or the scope after a declared name's `_`, stands for: an alias, a name, a tag.
|
|
18
|
+
const SEGMENT = "[\\p{L}\\p{N}_.-]+";
|
|
13
19
|
export default class EnvCatalog {
|
|
14
20
|
// Declarations in file order, each carrying the comment lines that introduce it. A commented
|
|
15
21
|
// declaration (`# PLURNK_EXECS_ONLY=sh,jq`) is an optional knob, not prose, so it is a
|
|
@@ -18,22 +24,48 @@ export default class EnvCatalog {
|
|
|
18
24
|
const out = [];
|
|
19
25
|
let pending = [];
|
|
20
26
|
for (const line of text.split("\n")) {
|
|
21
|
-
const
|
|
22
|
-
|
|
27
|
+
const name = EnvCatalog.declaredName(line);
|
|
28
|
+
// A blank line, or a comment that is not an assignment, introduces whatever comes next.
|
|
29
|
+
if (name === null) {
|
|
23
30
|
pending.push(line);
|
|
24
31
|
continue;
|
|
25
32
|
}
|
|
26
|
-
|
|
27
|
-
// A comment that is not an assignment introduces whatever comes next.
|
|
28
|
-
if (assignment === null) {
|
|
29
|
-
pending.push(line);
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
out.push({ name: assignment[1], text: [...pending, line].join("\n") });
|
|
33
|
+
out.push({ name, text: [...pending, line].join("\n") });
|
|
33
34
|
pending = [];
|
|
34
35
|
}
|
|
35
36
|
return out;
|
|
36
37
|
}
|
|
38
|
+
// The name one panel line declares, or null for prose. Every reader of a panel shares it.
|
|
39
|
+
static declaredName(line) {
|
|
40
|
+
return DECLARATION.exec(line.trim())?.[1] ?? null;
|
|
41
|
+
}
|
|
42
|
+
// The declaration grammar admits `<` only to open a placeholder.
|
|
43
|
+
static isFamily(name) {
|
|
44
|
+
return name.includes("<");
|
|
45
|
+
}
|
|
46
|
+
// {§operator-config-undeclared-key} Whether an installed package declares a key: by name, as a
|
|
47
|
+
// declared name's `_` scope (a per-alias knob, `PLURNK_MODEL_<alias>`), or as a family member.
|
|
48
|
+
static declares(files) {
|
|
49
|
+
const names = new Set();
|
|
50
|
+
const families = [];
|
|
51
|
+
for (const { text } of files) {
|
|
52
|
+
for (const { name } of EnvCatalog.declarations(text)) {
|
|
53
|
+
if (EnvCatalog.isFamily(name))
|
|
54
|
+
families.push(new RegExp(`^${name.replaceAll(PLACEHOLDER, SEGMENT)}$`, "u"));
|
|
55
|
+
else
|
|
56
|
+
names.add(name);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const scope = new RegExp(`^${SEGMENT}$`, "u");
|
|
60
|
+
const scoped = (key) => {
|
|
61
|
+
for (let at = key.indexOf("_"); at !== -1; at = key.indexOf("_", at + 1)) {
|
|
62
|
+
if (names.has(key.slice(0, at)) && scope.test(key.slice(at + 1)))
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
};
|
|
67
|
+
return (key) => names.has(key) || scoped(key) || families.some((family) => family.test(key));
|
|
68
|
+
}
|
|
37
69
|
// The name, or the comment that documents it — a Worker looks for a variable by what it is
|
|
38
70
|
// for ("search") before it knows what it is called. Never the value: a value match would
|
|
39
71
|
// surface a value the model did not ask to see — the catalog carries shipped defaults rather
|
|
@@ -49,6 +81,9 @@ export default class EnvCatalog {
|
|
|
49
81
|
const out = [];
|
|
50
82
|
for (const file of selected) {
|
|
51
83
|
for (const declaration of EnvCatalog.declarations(file.text)) {
|
|
84
|
+
// A family is no name a Worker can set; only its members are.
|
|
85
|
+
if (EnvCatalog.isFamily(declaration.name))
|
|
86
|
+
continue;
|
|
52
87
|
if (term !== undefined && !EnvCatalog.#matches(declaration, term))
|
|
53
88
|
continue;
|
|
54
89
|
const lines = declaration.text.split("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-catalog.js","sourceRoot":"","sources":["../../src/core/env-catalog.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,iGAAiG;AACjG,wDAAwD;AACxD,EAAE;AACF,+FAA+F;AAC/F,+FAA+F;AAC/F,8EAA8E;AAC9E,EAAE;AACF,gGAAgG;AAChG,iGAAiG;AACjG,+FAA+F;AAC/F,OAAO,WAAqC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"env-catalog.js","sourceRoot":"","sources":["../../src/core/env-catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/core/fork.sql
CHANGED
|
@@ -14,12 +14,12 @@ BEGIN
|
|
|
14
14
|
-- Loops: inherited history, never live work — a non-terminal status is clamped to 200 and
|
|
15
15
|
-- given a plain success result ({§machine-processes-fork-copies-the-log}).
|
|
16
16
|
INSERT INTO loops (
|
|
17
|
-
worker_id, sequence, status, prompt,
|
|
17
|
+
worker_id, sequence, status, prompt, model_route_id,
|
|
18
18
|
spawn_model_route_id, effort, max_turns, terminal_result
|
|
19
19
|
)
|
|
20
20
|
SELECT NEW.id, l.sequence,
|
|
21
21
|
CASE WHEN l.status IN (200, 413, 429, 499, 500, 504, 508) THEN l.status ELSE 200 END,
|
|
22
|
-
l.prompt, l.
|
|
22
|
+
l.prompt, l.model_route_id, l.spawn_model_route_id, l.effort, l.max_turns,
|
|
23
23
|
CASE WHEN l.status IN (200, 413, 429, 499, 500, 504, 508) THEN l.terminal_result ELSE '{"status":200}' END
|
|
24
24
|
FROM loops l
|
|
25
25
|
WHERE l.worker_id = NEW.parent_worker_id
|
|
@@ -93,8 +93,7 @@ BEGIN
|
|
|
93
93
|
WHERE e.worker_id = NEW.parent_worker_id
|
|
94
94
|
ORDER BY e.id;
|
|
95
95
|
|
|
96
|
-
-- Current projection: membership and folded intervals.
|
|
97
|
-
-- ({§context-output-selection}) stay at their defaults on the fork.
|
|
96
|
+
-- Current projection: membership and folded intervals.
|
|
98
97
|
UPDATE log_entry_projections
|
|
99
98
|
SET active = source.active,
|
|
100
99
|
folded = source.folded
|
|
@@ -30,6 +30,4 @@ export const readSystemPolicy = async () => {
|
|
|
30
30
|
const env = raw?.trim();
|
|
31
31
|
return readPolicy(env ? resolveInjectPath(env) : new HostPaths().policyFile, !!env);
|
|
32
32
|
};
|
|
33
|
-
// Project policy is retired from the system slot: the project AGENTS.md now
|
|
34
|
-
// rides turn 0 as the foisted AGENTS.md entry ({§turn0-agents-stunt}).
|
|
35
33
|
//# sourceMappingURL=packet-inject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-inject.js","sourceRoot":"","sources":["../../src/core/packet-inject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,2FAA2F;AAC3F,uDAAuD;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAU,EAAE,CACrD,IAAI,SAAS,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAA4B,EAAE;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,EAAE,CAAC;IAC7D,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,iFAAiF;AACjF,mFAAmF;AACnF,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,QAAiB,EAA0B,EAAE;IACjF,IAAI,CAAC;QAAC,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAAC,CAAC;IAC7D,OAAO,GAAG,EAAE,CAAC;QAAC,IAAI,QAAQ;YAAE,MAAM,GAAG,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACzD,CAAC,CAAC;AAEF,sGAAsG;AACtG,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAA4B,EAAE;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC9C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC,CAAC,wCAAwC;IACjG,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;IACxB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACxF,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"packet-inject.js","sourceRoot":"","sources":["../../src/core/packet-inject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,2FAA2F;AAC3F,uDAAuD;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAU,EAAE,CACrD,IAAI,SAAS,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAA4B,EAAE;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,EAAE,CAAC;IAC7D,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,iFAAiF;AACjF,mFAAmF;AACnF,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,QAAiB,EAA0B,EAAE;IACjF,IAAI,CAAC;QAAC,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAAC,CAAC;IAC7D,OAAO,GAAG,EAAE,CAAC;QAAC,IAAI,QAAQ;YAAE,MAAM,GAAG,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACzD,CAAC,CAAC;AAEF,sGAAsG;AACtG,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAA4B,EAAE;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC9C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC,CAAC,wCAAwC;IACjG,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;IACxB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACxF,CAAC,CAAC"}
|
|
@@ -100,14 +100,8 @@ export interface RenderedLog {
|
|
|
100
100
|
readonly records: readonly string[];
|
|
101
101
|
readonly curationTargets: readonly ReclaimableLogItem[];
|
|
102
102
|
readonly attachments: readonly PacketAttachment[];
|
|
103
|
-
readonly emissions: readonly RenderedEmission[];
|
|
104
103
|
readonly bodied: readonly BodiedLogRow[];
|
|
105
104
|
}
|
|
106
|
-
export interface RenderedEmission {
|
|
107
|
-
readonly coordinate: string;
|
|
108
|
-
readonly content: string;
|
|
109
|
-
readonly weight: number;
|
|
110
|
-
}
|
|
111
105
|
export default class PacketWire {
|
|
112
106
|
#private;
|
|
113
107
|
static renderSlot(sections: SectionView[], slot: "system" | "user"): string;
|
|
@@ -119,11 +113,9 @@ export default class PacketWire {
|
|
|
119
113
|
static renderLog(entries: unknown, weighContent: WeighContent, options?: RenderLogOptions): string;
|
|
120
114
|
static renderLogWithAccounting(entries: unknown, weighContent: WeighContent, options?: RenderLogOptions): RenderedLog;
|
|
121
115
|
static sectionContent(packet: Packet, name: string): string;
|
|
122
|
-
static packetToWireMessages(packet: Packet
|
|
116
|
+
static packetToWireMessages(packet: Packet): Array<ChatMessage & {
|
|
123
117
|
content: string;
|
|
124
118
|
}>;
|
|
125
|
-
static deliveredEmission(frozen: string): string;
|
|
126
|
-
static placedEmissions(sections: readonly SectionView[], emissions: ReadonlyMap<string, string>): string[];
|
|
127
119
|
static isArrival(e: {
|
|
128
120
|
readonly op?: unknown;
|
|
129
121
|
readonly origin?: unknown;
|
|
@@ -131,7 +123,7 @@ export default class PacketWire {
|
|
|
131
123
|
}): boolean;
|
|
132
124
|
static entryView(r: StoredLogRow, transientOpenLogEntryId?: number | null): LogEntryView;
|
|
133
125
|
static rowTokens(view: LogEntryView, weighContent: WeighContent, options?: RenderLogOptions): number;
|
|
134
|
-
static wireMessages(packet: RequestPacket,
|
|
126
|
+
static wireMessages(packet: RequestPacket, bytesOf: (attachment: PacketAttachment) => Promise<Uint8Array>, accepts?: (kind: PacketAttachment["kind"]) => boolean): Promise<ChatMessage[]>;
|
|
135
127
|
static attachmentCaption(attachment: PacketAttachment): string;
|
|
136
128
|
}
|
|
137
129
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-wire.d.ts","sourceRoot":"","sources":["../../src/core/packet-wire.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"packet-wire.d.ts","sourceRoot":"","sources":["../../src/core/packet-wire.ts"],"names":[],"mappings":"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"}
|
package/dist/core/packet-wire.js
CHANGED
|
@@ -95,7 +95,7 @@ export default class PacketWire {
|
|
|
95
95
|
static renderLogWithAccounting(entries, weighContent, options = {}) {
|
|
96
96
|
const log = Array.isArray(entries) ? entries : [];
|
|
97
97
|
if (log.length === 0)
|
|
98
|
-
return { content: "", records: [], curationTargets: [], attachments: [],
|
|
98
|
+
return { content: "", records: [], curationTargets: [], attachments: [], bodied: [] };
|
|
99
99
|
const rows = PacketWire.#renderLogEntries(log, weighContent, options);
|
|
100
100
|
const records = rows.map(({ content }) => content);
|
|
101
101
|
return {
|
|
@@ -103,7 +103,6 @@ export default class PacketWire {
|
|
|
103
103
|
records,
|
|
104
104
|
curationTargets: rows.flatMap(({ curationTarget }) => curationTarget === null ? [] : [curationTarget]),
|
|
105
105
|
attachments: rows.flatMap(({ attachment }) => attachment === null ? [] : [attachment]),
|
|
106
|
-
emissions: rows.flatMap(({ emission }) => emission === null ? [] : [emission]),
|
|
107
106
|
bodied: rows.flatMap(({ bodied }) => bodied === null ? [] : [bodied]),
|
|
108
107
|
};
|
|
109
108
|
}
|
|
@@ -114,97 +113,17 @@ export default class PacketWire {
|
|
|
114
113
|
const s = packet.sections?.find((x) => x.name === name);
|
|
115
114
|
return typeof s?.content === "string" ? s.content : "";
|
|
116
115
|
}
|
|
117
|
-
// {§packet-wire-envelope}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const messages = [{ role: "system", content: PacketWire.renderSlot(sections, "system") }];
|
|
124
|
-
let pending = [];
|
|
125
|
-
for (const section of sections) {
|
|
126
|
-
if (section.slot !== "user")
|
|
127
|
-
continue;
|
|
128
|
-
const rendered = PacketWire.renderSection(section);
|
|
129
|
-
if (rendered.length === 0)
|
|
130
|
-
continue;
|
|
131
|
-
if (section.name !== "log") {
|
|
132
|
-
pending.push(rendered);
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
for (const { content, coordinate } of PacketWire.#logRecords(rendered)) {
|
|
136
|
-
pending.push(content);
|
|
137
|
-
const frozen = coordinate === null ? undefined : emissions.get(coordinate);
|
|
138
|
-
const emission = frozen === undefined ? "" : PacketWire.deliveredEmission(frozen);
|
|
139
|
-
// {§emission-row}: an emission of only NOTE and WAIT delivers nothing; its row stands.
|
|
140
|
-
if (emission.length === 0)
|
|
141
|
-
continue;
|
|
142
|
-
messages.push({ role: "user", content: pending.join("\n\n") });
|
|
143
|
-
messages.push({ role: "assistant", content: emission });
|
|
144
|
-
pending = [];
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
const closing = pending.join("\n\n");
|
|
148
|
-
if (closing.length === 0 && messages.at(-1)?.role === "assistant")
|
|
149
|
-
throw new Error("a request never ends on an emission: nothing follows the last one");
|
|
150
|
-
messages.push({ role: "user", content: closing });
|
|
151
|
-
return messages;
|
|
152
|
-
}
|
|
153
|
-
// {§emission-row} — bodies are logged, never replayed: a statement with a body is its heading and an
|
|
154
|
-
// empty closer, and one without a body is one line, so the shape says whether anything was left out. A
|
|
155
|
-
// NOTE or WAIT, and a parameterless KILL or SEND, is not replayed at all: its own row shows it whole.
|
|
156
|
-
// Deliberately a text filter: the frozen projection is TurnOps' own rendering, whose fences are longer
|
|
157
|
-
// than any backtick run inside them, so a block is read back by its fences alone, whatever era froze it.
|
|
158
|
-
static deliveredEmission(frozen) {
|
|
159
|
-
const lines = frozen.split("\n");
|
|
160
|
-
const kept = [];
|
|
161
|
-
for (let index = 0; index < lines.length;) {
|
|
162
|
-
const fence = /^`{3,}/u.exec(lines[index])?.[0];
|
|
163
|
-
if (fence === undefined)
|
|
164
|
-
throw new Error(`an emission block opens with a fence, not ${JSON.stringify(lines[index])}`);
|
|
165
|
-
const end = lines.findIndex((line, at) => at > index && (line === fence || line.startsWith(`${fence} <!-- `)));
|
|
166
|
-
if (end === -1)
|
|
167
|
-
throw new Error("an emission block closes with its own fence");
|
|
168
|
-
const heading = lines[index];
|
|
169
|
-
if (!new RegExp(`^${fence}(?:(?:NOTE|WAIT)\\b|(?:KILL|SEND)(?:\\s+<!--.*-->)?\\s*$)`, "u").test(heading)) {
|
|
170
|
-
kept.push(end > index + 1 ? `${heading}\n${fence}` : `${heading}${fence}`);
|
|
171
|
-
}
|
|
172
|
-
index = end + 2;
|
|
173
|
-
}
|
|
174
|
-
return kept.join("\n\n");
|
|
175
|
-
}
|
|
176
|
-
// {§emission-row} — the coordinates of the emission rows present in the final log section, in order.
|
|
177
|
-
// Every emission row must be announced by the render pass that built the map.
|
|
178
|
-
static placedEmissions(sections, emissions) {
|
|
179
|
-
const log = sections.find((section) => section.slot === "user" && section.name === "log");
|
|
180
|
-
if (log === undefined)
|
|
181
|
-
return [];
|
|
182
|
-
const placed = [];
|
|
183
|
-
for (const { coordinate, leaf } of PacketWire.#logRecords(PacketWire.renderSection(log))) {
|
|
184
|
-
if (coordinate === null)
|
|
185
|
-
continue;
|
|
186
|
-
if (emissions.has(coordinate)) {
|
|
187
|
-
if (placed.includes(coordinate))
|
|
188
|
-
throw new Error(`log:///${coordinate}/emission appears twice in one log section`);
|
|
189
|
-
placed.push(coordinate);
|
|
190
|
-
}
|
|
191
|
-
else if (leaf === "emission") {
|
|
192
|
-
throw new Error(`log:///${coordinate}/emission reached the log section without its emission`);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return placed;
|
|
196
|
-
}
|
|
197
|
-
static #logRecords(rendered) {
|
|
198
|
-
return rendered.split(/\n\n(?=### log:\/\/\/)/u).map((content) => {
|
|
199
|
-
const match = /^### log:\/\/\/(\d+\/\d+\/\d+)(?:\/(\S*))?(?=\s|$)/mu.exec(content);
|
|
200
|
-
return { content, coordinate: match?.[1] ?? null, leaf: match?.[2] ?? null };
|
|
201
|
-
});
|
|
116
|
+
// {§packet-wire-envelope}: the stored slots are the text envelope, without assistant replay.
|
|
117
|
+
static packetToWireMessages(packet) {
|
|
118
|
+
return [
|
|
119
|
+
{ role: "system", content: PacketWire.renderSlot(packet.sections ?? [], "system") },
|
|
120
|
+
{ role: "user", content: PacketWire.renderSlot(packet.sections ?? [], "user") },
|
|
121
|
+
];
|
|
202
122
|
}
|
|
203
123
|
// Number a non-READ body line as `<N>:<line>` — `N:` followed by NO separator whitespace
|
|
204
124
|
// ({§render-rule-line-navigable-prefix}): the leading digit prevents column-zero fence collisions and gives
|
|
205
125
|
// the model line refs for free (`READ (...) <42-46>`), while the absence of any separator means a
|
|
206
|
-
// reproduced line has nothing between `N:` and the content to copy
|
|
207
|
-
// to leak into edit bodies and corrupt indentation. The content's OWN leading whitespace is
|
|
126
|
+
// reproduced line has nothing between `N:` and the content to copy. The content's OWN leading whitespace is
|
|
208
127
|
// content, preserved verbatim. `N` is left-padded to the body's line-range width so every body
|
|
209
128
|
// keeps one stable content column; FIND rows pass the complete result-set width so their pages
|
|
210
129
|
// share a column with the whole set.
|
|
@@ -458,7 +377,7 @@ export default class PacketWire {
|
|
|
458
377
|
const rx = (typeof e.rx === "string" ? PacketWire.#safeParse(e.rx) : e.rx);
|
|
459
378
|
const facts = PacketWire.#rowResultFacts(identity, e, rx, bodies[index]);
|
|
460
379
|
const projected = PacketWire.#rowBody(identity, e, bodies[index], visibility[index], facts);
|
|
461
|
-
return PacketWire.#rowAccounting(identity, e,
|
|
380
|
+
return PacketWire.#rowAccounting(identity, e, visibility[index], projected, weighContent, options);
|
|
462
381
|
});
|
|
463
382
|
}
|
|
464
383
|
static #attrsOf(e) {
|
|
@@ -604,11 +523,10 @@ export default class PacketWire {
|
|
|
604
523
|
// {§worker-wait-timing} — the accepted bound, not elapsed time or the current configuration.
|
|
605
524
|
if (op === "WAIT" && e.attrs !== null && typeof e.attrs === "object" && "waiting" in e.attrs) {
|
|
606
525
|
const seconds = e.attrs.waiting;
|
|
607
|
-
if (typeof seconds !== "number" || !Number.isFinite(seconds) ||
|
|
526
|
+
if (typeof seconds !== "number" || !Number.isFinite(seconds) || seconds < 0) {
|
|
608
527
|
throw new TypeError("A WAIT receipt carries a malformed waiting bound.");
|
|
609
528
|
}
|
|
610
|
-
|
|
611
|
-
meta.waitSeconds = seconds;
|
|
529
|
+
meta.waitSeconds = seconds;
|
|
612
530
|
}
|
|
613
531
|
// An execution's output is a separate stream entry ({§exec-stream}); its address rides in a
|
|
614
532
|
// `stream` link, distinct from the runtime-owned invocation target.
|
|
@@ -777,8 +695,7 @@ export default class PacketWire {
|
|
|
777
695
|
};
|
|
778
696
|
}
|
|
779
697
|
// The body the row shows: the canonical full body, shared with log READ, log FIND and search
|
|
780
|
-
// derivation, whole. Whether a result fit was decided where it landed ({§context-fit})
|
|
781
|
-
// cuts nothing but the emission head ({§emission-row}).
|
|
698
|
+
// derivation, whole. Whether a result fit was decided where it landed ({§context-fit}).
|
|
782
699
|
static #rowBody(identity, e, fullBody, bodyVisibility, facts) {
|
|
783
700
|
const { meta, op } = identity;
|
|
784
701
|
const projectedBody = {
|
|
@@ -855,7 +772,7 @@ export default class PacketWire {
|
|
|
855
772
|
// The row's native attachment, a landed-unfit arrival's size, and the accounting field that
|
|
856
773
|
// participates in the row it measures: iterate until its decimal width and therefore the
|
|
857
774
|
// rendered row's curation weight are stable. {§packet-token-accounting}
|
|
858
|
-
static #rowAccounting(identity, e,
|
|
775
|
+
static #rowAccounting(identity, e, bodyVisibility, projected, weighContent, options) {
|
|
859
776
|
const { meta, op, coordinate, path, target } = identity;
|
|
860
777
|
const { body, display } = projected;
|
|
861
778
|
const nativeCandidate = op === "READ" && typeof e.status === "number" && e.status >= 200 && e.status < 300
|
|
@@ -871,11 +788,6 @@ export default class PacketWire {
|
|
|
871
788
|
const attachment = !(bodyVisibility.totalLines > 0 && bodyVisibility.fullyFolded)
|
|
872
789
|
? native
|
|
873
790
|
: null;
|
|
874
|
-
// {§emission-row}: an emission row carries its frozen emission outside its record, and charges what
|
|
875
|
-
// the wire delivers of it, as the worker's own message, exactly as a native part is charged.
|
|
876
|
-
const emission = LogEntryProjection.isEmission(e) && coordinate !== null
|
|
877
|
-
? { coordinate, content: fullBody.content, weight: weighContent(PacketWire.deliveredEmission(fullBody.content)) }
|
|
878
|
-
: null;
|
|
879
791
|
// {§log-wire-format}: one descriptive heading, the facts, the body.
|
|
880
792
|
const render = (open, tokens) => {
|
|
881
793
|
const lines = [`### ${path}${identity.description === null ? "" : ` ${identity.description}`} · ${tokens}`];
|
|
@@ -892,18 +804,18 @@ export default class PacketWire {
|
|
|
892
804
|
delete meta.tokensAttachment;
|
|
893
805
|
let tokens = 0;
|
|
894
806
|
for (let pass = 0; pass < 8; pass += 1) {
|
|
895
|
-
const next = weighContent(render(open, tokens)) + (part?.weight ?? 0)
|
|
807
|
+
const next = weighContent(render(open, tokens)) + (part?.weight ?? 0);
|
|
896
808
|
if (next === tokens)
|
|
897
809
|
return { content: render(open, tokens), tokens };
|
|
898
810
|
tokens = next;
|
|
899
811
|
}
|
|
900
812
|
throw new Error("packet log row accounting did not converge");
|
|
901
813
|
};
|
|
902
|
-
const row = (rendered, part, bodied) => ({ content: rendered.content, curationTarget: { path, tokens: rendered.tokens }, attachment: part,
|
|
814
|
+
const row = (rendered, part, bodied) => ({ content: rendered.content, curationTarget: { path, tokens: rendered.tokens }, attachment: part, bodied });
|
|
903
815
|
const whole = converge(display === "open", attachment);
|
|
904
816
|
// {§context-own-rows-fit} — a row the wall may take carries a body or a native part and is not an
|
|
905
|
-
// emission row, whose
|
|
906
|
-
if (typeof e.id !== "number" ||
|
|
817
|
+
// emission row, whose folded record carries no body.
|
|
818
|
+
if (typeof e.id !== "number" || LogEntryProjection.isEmission(e) || (display !== "open" && attachment === null))
|
|
907
819
|
return row(whole, attachment, null);
|
|
908
820
|
if (!(options.bodiless?.has(e.id) ?? false))
|
|
909
821
|
return row(whole, attachment, { id: e.id, tokens: whole.tokens });
|
|
@@ -956,19 +868,24 @@ export default class PacketWire {
|
|
|
956
868
|
}
|
|
957
869
|
// {§packet-attachment-parts} — the wire form with native parts: user text first, then each accepted
|
|
958
870
|
// retained native part in observation order.
|
|
959
|
-
static async wireMessages(packet,
|
|
960
|
-
const messages = PacketWire.packetToWireMessages(packet
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
871
|
+
static async wireMessages(packet, bytesOf, accepts = () => true) {
|
|
872
|
+
const messages = PacketWire.packetToWireMessages(packet);
|
|
873
|
+
const attachments = (packet.attachments ?? []).filter(({ kind }) => accepts(kind));
|
|
874
|
+
if (attachments.length === 0)
|
|
875
|
+
return messages;
|
|
876
|
+
// {§previous-emission}: native inputs precede the final section, never follow it.
|
|
877
|
+
const preceding = packet.sections.filter(({ name }) => name !== "previous-emission");
|
|
878
|
+
const previous = packet.sections.find(({ name }) => name === "previous-emission");
|
|
879
|
+
const parts = [{ type: "text", text: PacketWire.renderSlot(preceding, "user") }];
|
|
880
|
+
for (const attachment of attachments) {
|
|
967
881
|
const bytes = await bytesOf(attachment);
|
|
968
882
|
parts.push({ type: "text", text: PacketWire.attachmentCaption(attachment) });
|
|
969
883
|
parts.push({ type: "file", data: bytes, mediaType: attachment.mimetype });
|
|
970
884
|
}
|
|
971
|
-
|
|
885
|
+
const tail = previous === undefined ? "" : PacketWire.renderSection(previous);
|
|
886
|
+
if (tail.length > 0)
|
|
887
|
+
parts.push({ type: "text", text: `\n\n${tail}` });
|
|
888
|
+
return [messages[0], { role: "user", content: parts }];
|
|
972
889
|
}
|
|
973
890
|
// {§packet-attachment-parts} — the part's identity: a native part on the user turn otherwise reads as
|
|
974
891
|
// an arrival, and the model cannot tell that the READ row is what keeps it in the packet.
|