instar 1.3.571 → 1.3.573
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +37 -3
- package/dist/commands/server.js.map +1 -1
- package/dist/core/ws2SendWiring.d.ts +1 -1
- package/dist/core/ws2SendWiring.d.ts.map +1 -1
- package/dist/core/ws2SendWiring.js +3 -3
- package/dist/core/ws2SendWiring.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.572.md +55 -0
- package/upgrades/1.3.573.md +47 -0
- package/upgrades/side-effects/ws2-send-2-knowledge.md +51 -0
- package/upgrades/side-effects/ws2-send-2-relationships.md +52 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAkH7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAg4CD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAkH7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAg4CD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsqctE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
|
package/dist/commands/server.js
CHANGED
|
@@ -3643,7 +3643,7 @@ export async function startServer(options) {
|
|
|
3643
3643
|
// (= that one local record). tierOf returns HIGH (append-both-and-flag never
|
|
3644
3644
|
// silently clobbers two divergent people). Consulted by the relationships peer-read
|
|
3645
3645
|
// surface ONLY when stateSync.relationships.enabled is true.
|
|
3646
|
-
const { relationshipTierOf, relationshipToOriginRecord, deriveRelationshipRecordKey, mergeUnionToRelationships, renderForeignRelationshipContext, RELATIONSHIP_STORE_KEY } = await import('../core/RelationshipsReplicatedStore.js');
|
|
3646
|
+
const { relationshipTierOf, relationshipToOriginRecord, deriveRelationshipRecordKey, buildRelationshipRecordData, buildRelationshipTombstoneData, mergeUnionToRelationships, renderForeignRelationshipContext, RELATIONSHIP_STORE_KEY } = await import('../core/RelationshipsReplicatedStore.js');
|
|
3647
3647
|
const relationshipsUnionReader = new ReplicatedStoreReader({
|
|
3648
3648
|
registry: replicatedKindRegistry,
|
|
3649
3649
|
stores: _stateSyncStoresResolved, // gate-resolved (dev-live / fleet-dark) per operator directive 2026-06-13
|
|
@@ -7962,6 +7962,24 @@ export async function startServer(options) {
|
|
|
7962
7962
|
emitDelete: (title, category, source, deletedAt) => emitter.emit(LEARNING_STORE_KEY, deriveLearningRecordKey(title, category, source), (hlc, origin, observed) => buildLearningTombstoneData({ title, category, source, hlc, origin, deletedAt, observed })),
|
|
7963
7963
|
});
|
|
7964
7964
|
}
|
|
7965
|
+
// WS2.3 SEND-SIDE: attach the journal-backed emitter to the RelationshipManager's
|
|
7966
|
+
// replication hooks. The manager already fires emitPut on every saved person and
|
|
7967
|
+
// emitDelete on erase/merge (RelationshipManager.setReplicationEmitter); the adapter
|
|
7968
|
+
// maps the manager's emit signature to the relationship build*RecordData projection.
|
|
7969
|
+
// The generic emitter owns the dark gate, HLC tick, `observed` witness, journal
|
|
7970
|
+
// append, and ALL the safety guards (null recordKey ⇒ skip, null projection ⇒ skip,
|
|
7971
|
+
// over-cap throw ⇒ counted no-op) — so the adapter mirrors learnings with no extra
|
|
7972
|
+
// guarding. Attached only when the emitter exists (journal live) AND the manager is
|
|
7973
|
+
// constructed; when stateSync.relationships is dark the hooks stay no-ops (byte-
|
|
7974
|
+
// identical single-machine behavior — the local UUID id never crosses; only the
|
|
7975
|
+
// disclosure-minimized, channel-keyed projection does — REQ-M4).
|
|
7976
|
+
if (replicatedRecordEmitter && relationships) {
|
|
7977
|
+
const emitter = replicatedRecordEmitter;
|
|
7978
|
+
relationships.setReplicationEmitter({
|
|
7979
|
+
emitPut: (rec) => emitter.emit(RELATIONSHIP_STORE_KEY, deriveRelationshipRecordKey(rec.channels), (hlc, origin, observed) => buildRelationshipRecordData({ record: rec, hlc, origin, observed })),
|
|
7980
|
+
emitDelete: (channels, deletedAt) => emitter.emit(RELATIONSHIP_STORE_KEY, deriveRelationshipRecordKey(channels), (hlc, origin, observed) => buildRelationshipTombstoneData({ channels, hlc, origin, deletedAt, observed })),
|
|
7981
|
+
});
|
|
7982
|
+
}
|
|
7965
7983
|
// WS2.4 — the bypass-proof union reader for the `knowledge` store + the emit seam on
|
|
7966
7984
|
// the KnowledgeManager. The KnowledgeManager reads the local catalog.json (cheap, no
|
|
7967
7985
|
// background work); we construct one here scoped to the replication wiring. The union
|
|
@@ -7979,7 +7997,7 @@ export async function startServer(options) {
|
|
|
7979
7997
|
// file body — fork #2).
|
|
7980
7998
|
const { KnowledgeManager } = await import('../knowledge/KnowledgeManager.js');
|
|
7981
7999
|
const knowledgeManager = new KnowledgeManager(config.stateDir);
|
|
7982
|
-
const { knowledgeTierOf, knowledgeToOriginRecord, deriveKnowledgeRecordKey, KNOWLEDGE_STORE_KEY, } = await import('../core/KnowledgeReplicatedStore.js');
|
|
8000
|
+
const { knowledgeTierOf, knowledgeToOriginRecord, deriveKnowledgeRecordKey, buildKnowledgeRecordData, buildKnowledgeTombstoneData, KNOWLEDGE_STORE_KEY, } = await import('../core/KnowledgeReplicatedStore.js');
|
|
7983
8001
|
const knowledgeUnionReader = new ReplicatedStoreReader({
|
|
7984
8002
|
registry: replicatedKindRegistry,
|
|
7985
8003
|
stores: _stateSyncStoresResolved, // gate-resolved (dev-live / fleet-dark) per operator directive 2026-06-13
|
|
@@ -8010,7 +8028,23 @@ export async function startServer(options) {
|
|
|
8010
8028
|
conflictStore,
|
|
8011
8029
|
});
|
|
8012
8030
|
void knowledgeUnionReader; // consumed by the knowledge peer-read surface + the journal-apply rollout stage (WS2.4+)
|
|
8013
|
-
|
|
8031
|
+
// WS2.4 SEND-SIDE: attach the journal-backed emitter to the KnowledgeManager's
|
|
8032
|
+
// replication hooks. The manager already fires emitPut on every ingested source and
|
|
8033
|
+
// emitDelete on remove() (KnowledgeManager.setKnowledgeReplicationEmitter); the adapter
|
|
8034
|
+
// maps the manager's emit signature to the knowledge build*RecordData projection. The
|
|
8035
|
+
// generic emitter owns the dark gate, HLC tick, `observed` witness, journal append, and
|
|
8036
|
+
// ALL the safety guards (null recordKey ⇒ skip, null projection ⇒ skip, over-cap throw ⇒
|
|
8037
|
+
// counted no-op) — so the adapter mirrors learnings/relationships with no extra guarding.
|
|
8038
|
+
// Only the catalog METADATA crosses (title/url/type/tags/summary/wordCount) — NEVER the
|
|
8039
|
+
// markdown file body, NEVER the local id/filePath (fork #2). Attached only when the
|
|
8040
|
+
// emitter exists; dark by default ⇒ no-op (byte-identical single-machine behavior).
|
|
8041
|
+
if (replicatedRecordEmitter) {
|
|
8042
|
+
const emitter = replicatedRecordEmitter;
|
|
8043
|
+
knowledgeManager.setKnowledgeReplicationEmitter({
|
|
8044
|
+
emitPut: (rec) => emitter.emit(KNOWLEDGE_STORE_KEY, deriveKnowledgeRecordKey(rec.title, rec.url, rec.type), (hlc, origin, observed) => buildKnowledgeRecordData({ record: rec, hlc, origin, observed })),
|
|
8045
|
+
emitDelete: (title, url, type, deletedAt) => emitter.emit(KNOWLEDGE_STORE_KEY, deriveKnowledgeRecordKey(title, url, type), (hlc, origin, observed) => buildKnowledgeTombstoneData({ title, url, type, hlc, origin, deletedAt, observed })),
|
|
8046
|
+
});
|
|
8047
|
+
}
|
|
8014
8048
|
// WS2.5 — the bypass-proof union reader for the `evolutionActions` store. The single
|
|
8015
8049
|
// funnel every replicated action read routes through, so no caller reads a raw replica
|
|
8016
8050
|
// around the no-clobber rule. `loadOriginRecords` materializes the OWN action queue (the
|