instar 1.3.1638 → 1.3.1640
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 +40 -8
- package/dist/commands/server.js.map +1 -1
- package/dist/core/AppConversationStore.d.ts +39 -0
- package/dist/core/AppConversationStore.d.ts.map +1 -1
- package/dist/core/AppConversationStore.js +9 -0
- package/dist/core/AppConversationStore.js.map +1 -1
- package/dist/core/AppConversationsReplicatedStore.js +1 -1
- package/dist/core/AppConversationsReplicatedStore.js.map +1 -1
- package/dist/core/AppReplyRelayInstaller.d.ts.map +1 -1
- package/dist/core/AppReplyRelayInstaller.js +2 -0
- package/dist/core/AppReplyRelayInstaller.js.map +1 -1
- package/dist/core/CodexLifecycleProductionComposition.d.ts +1 -1
- package/dist/core/CodexLifecycleProductionComposition.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +9 -1
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SessionDrainRunner.d.ts +4 -2
- package/dist/core/SessionDrainRunner.d.ts.map +1 -1
- package/dist/core/SessionDrainRunner.js +2 -2
- package/dist/core/SessionDrainRunner.js.map +1 -1
- package/dist/core/SlackReplyRelayInstaller.d.ts.map +1 -1
- package/dist/core/SlackReplyRelayInstaller.js +2 -0
- package/dist/core/SlackReplyRelayInstaller.js.map +1 -1
- package/dist/core/TopicProfileOrchestrator.d.ts.map +1 -1
- package/dist/core/TopicProfileOrchestrator.js +2 -1
- package/dist/core/TopicProfileOrchestrator.js.map +1 -1
- package/dist/core/types.d.ts +16 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/feedback-factory/execute/ConfinedRunner.d.ts +4 -1
- package/dist/feedback-factory/execute/ConfinedRunner.d.ts.map +1 -1
- package/dist/feedback-factory/execute/ConfinedRunner.js +40 -8
- package/dist/feedback-factory/execute/ConfinedRunner.js.map +1 -1
- package/dist/feedback-factory/execute/FeedbackExecutorService.js +4 -4
- package/dist/feedback-factory/execute/FeedbackExecutorService.js.map +1 -1
- package/dist/feedback-factory/execute/executePolicy.d.ts +3 -0
- package/dist/feedback-factory/execute/executePolicy.d.ts.map +1 -1
- package/dist/feedback-factory/execute/executePolicy.js +3 -0
- package/dist/feedback-factory/execute/executePolicy.js.map +1 -1
- package/dist/messaging/messageOrigin.d.ts +94 -0
- package/dist/messaging/messageOrigin.d.ts.map +1 -0
- package/dist/messaging/messageOrigin.js +246 -0
- package/dist/messaging/messageOrigin.js.map +1 -0
- package/dist/messaging/plainNoticeCheck.d.ts +9 -0
- package/dist/messaging/plainNoticeCheck.d.ts.map +1 -0
- package/dist/messaging/plainNoticeCheck.js +68 -0
- package/dist/messaging/plainNoticeCheck.js.map +1 -0
- package/dist/messaging/shared/isSystemOrProxyMessage.d.ts +0 -24
- package/dist/messaging/shared/isSystemOrProxyMessage.d.ts.map +1 -1
- package/dist/messaging/shared/isSystemOrProxyMessage.js +6 -3
- package/dist/messaging/shared/isSystemOrProxyMessage.js.map +1 -1
- package/dist/messaging/slack/FileHandler.d.ts +3 -1
- package/dist/messaging/slack/FileHandler.d.ts.map +1 -1
- package/dist/messaging/slack/FileHandler.js +9 -1
- package/dist/messaging/slack/FileHandler.js.map +1 -1
- package/dist/messaging/slack/SlackAdapter.d.ts +9 -0
- package/dist/messaging/slack/SlackAdapter.d.ts.map +1 -1
- package/dist/messaging/slack/SlackAdapter.js +60 -4
- package/dist/messaging/slack/SlackAdapter.js.map +1 -1
- package/dist/messaging/slack/SlackOriginLedger.d.ts +97 -0
- package/dist/messaging/slack/SlackOriginLedger.d.ts.map +1 -0
- package/dist/messaging/slack/SlackOriginLedger.js +298 -0
- package/dist/messaging/slack/SlackOriginLedger.js.map +1 -0
- package/dist/messaging/telegram-origin/OriginAwareness.d.ts +3 -0
- package/dist/messaging/telegram-origin/OriginAwareness.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginAwareness.js +14 -0
- package/dist/messaging/telegram-origin/OriginAwareness.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginStore.d.ts +5 -0
- package/dist/messaging/telegram-origin/OriginStore.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginStore.js +2 -1
- package/dist/messaging/telegram-origin/OriginStore.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginStore.worker.js +1 -1
- package/dist/messaging/telegram-origin/OriginStore.worker.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginStoreBackend.d.ts +14 -0
- package/dist/messaging/telegram-origin/OriginStoreBackend.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginStoreBackend.js +45 -0
- package/dist/messaging/telegram-origin/OriginStoreBackend.js.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginService.d.ts +4 -0
- package/dist/messaging/telegram-origin/TelegramOriginService.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginService.js +10 -2
- package/dist/messaging/telegram-origin/TelegramOriginService.js.map +1 -1
- package/dist/messaging/userNotices.d.ts +47 -0
- package/dist/messaging/userNotices.d.ts.map +1 -0
- package/dist/messaging/userNotices.js +79 -0
- package/dist/messaging/userNotices.js.map +1 -0
- package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
- package/dist/native/instar-desktop-host +0 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +4 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +3 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/mobileConversationRoutes.d.ts +17 -1
- package/dist/server/mobileConversationRoutes.d.ts.map +1 -1
- package/dist/server/mobileConversationRoutes.js +31 -6
- package/dist/server/mobileConversationRoutes.js.map +1 -1
- package/dist/server/mobileSlackRoutes.d.ts +13 -0
- package/dist/server/mobileSlackRoutes.d.ts.map +1 -1
- package/dist/server/mobileSlackRoutes.js +14 -1
- package/dist/server/mobileSlackRoutes.js.map +1 -1
- package/dist/server/originDisplayPreferences.d.ts.map +1 -1
- package/dist/server/originDisplayPreferences.js +19 -8
- package/dist/server/originDisplayPreferences.js.map +1 -1
- package/dist/server/replyOrigin.d.ts +39 -0
- package/dist/server/replyOrigin.d.ts.map +1 -0
- package/dist/server/replyOrigin.js +89 -0
- package/dist/server/replyOrigin.js.map +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +162 -4
- package/dist/server/routes.js.map +1 -1
- package/package.json +4 -3
- package/scripts/blocking-decision-surfaces-baseline.json +3 -3
- package/scripts/lint-plain-user-notices.mjs +191 -0
- package/scripts/plain-user-notices-baseline.json +6 -0
- package/src/data/builtin-manifest.json +66 -66
- package/src/data/plain-notice-terms.json +38 -0
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/scaffold/templates.ts +5 -1
- package/src/templates/scripts/app-reply.sh +17 -0
- package/src/templates/scripts/slack-reply.sh +23 -0
- package/upgrades/1.3.1639.md +24 -0
- package/upgrades/1.3.1640.md +25 -0
- package/upgrades/feedback-confined-timeout.eli16.md +7 -0
- package/upgrades/side-effects/feedback-confined-timeout.md +80 -0
- package/upgrades/side-effects/message-origin-all-platforms.md +92 -0
- package/upgrades/side-effects/plain-user-notices.eli16.md +15 -0
- package/upgrades/side-effects/plain-user-notices.md +76 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/server.js
CHANGED
|
@@ -85,6 +85,7 @@ import { slackReplyRelayReadiness } from '../core/SlackReplyRelayInstaller.js';
|
|
|
85
85
|
import { claimSuspensionExcludesPin } from '../core/TopicClaimAnnotationStore.js';
|
|
86
86
|
import { parseProfileTrigger, platformMessageIdFrom } from '../core/topicProfileIngress.js';
|
|
87
87
|
import { NewTopicDefaultStore, evaluateSessionPoolLocalClaim, createSpawnForTopic, createDashboardPoolClaimOps, seedTopicProfileAtCreation } from '../core/dashboardTopicProfile.js';
|
|
88
|
+
import { movedMachinesMidStepNotice, SESSION_RESTARTING_NOTICE, SESSION_BACK_NOTICE } from '../messaging/userNotices.js';
|
|
88
89
|
import { parseDashboardCreatePayload, safeMachineLabel, createDashboardCreateStartRunner } from '../core/dashboardMachineChoice.js';
|
|
89
90
|
import { slugifyChannelName } from '../messaging/slack/sanitize.js';
|
|
90
91
|
import { TopicProfileOrchestrator, resolvedToApplied, } from '../core/TopicProfileOrchestrator.js';
|
|
@@ -1563,14 +1564,18 @@ async function respawnSessionForTopic(sessionManager, telegram, targetSession, t
|
|
|
1563
1564
|
: latestMessage;
|
|
1564
1565
|
const newSessionName = await spawnSessionForTopic(sessionManager, telegram, topicName, topicId, effectiveMessage, topicMemory, userProfile, undefined, (options?.configHome || options?.accountId) ? { configHome: options?.configHome, accountId: options?.accountId } : undefined, options?.awaitInitialInjection ? { awaitInitialInjection: true } : undefined);
|
|
1565
1566
|
telegram.registerTopicSession(topicId, newSessionName, topicName);
|
|
1566
|
-
|
|
1567
|
+
// `quietAfterRespawn`: the caller already told the person a restart is under way
|
|
1568
|
+
// for their message (the dead-session and too-long paths), and the reply itself
|
|
1569
|
+
// confirms it — a second "back" note is lifecycle narration (Near-Silent
|
|
1570
|
+
// Notifications; UX standard Rule 8). Every other caller confirms once.
|
|
1571
|
+
if (!options?.silent && !options?.quietAfterRespawn) {
|
|
1567
1572
|
// The respawn already succeeded. A held or failed notice must not turn it
|
|
1568
1573
|
// into a reported failure (the caller would respawn again: a duplicate session).
|
|
1569
1574
|
try {
|
|
1570
|
-
await telegram.sendToTopic(topicId,
|
|
1575
|
+
await telegram.sendToTopic(topicId, SESSION_BACK_NOTICE);
|
|
1571
1576
|
}
|
|
1572
1577
|
catch (err) {
|
|
1573
|
-
console.warn(`[telegram→session] Respawned for topic ${topicId}, but the
|
|
1578
|
+
console.warn(`[telegram→session] Respawned for topic ${topicId}, but the back-up notice was not sent: ${err instanceof Error ? err.message : String(err)}`);
|
|
1574
1579
|
}
|
|
1575
1580
|
}
|
|
1576
1581
|
console.log(`[telegram→session] Respawned "${newSessionName}" for topic ${topicId}`);
|
|
@@ -2834,7 +2839,7 @@ getHubClassifierDeps) {
|
|
|
2834
2839
|
if (_topicResumeMap) {
|
|
2835
2840
|
_topicResumeMap.remove(topicId);
|
|
2836
2841
|
}
|
|
2837
|
-
respawnSessionForTopic(sessionManager, telegram, targetSession, topicId, text, topicMemory, resolvedUser ?? undefined)
|
|
2842
|
+
respawnSessionForTopic(sessionManager, telegram, targetSession, topicId, text, topicMemory, resolvedUser ?? undefined, undefined, { quietAfterRespawn: true })
|
|
2838
2843
|
.then(() => confirmLocalSessionPoolClaim())
|
|
2839
2844
|
.catch(err => {
|
|
2840
2845
|
console.error(`[telegram→session] Context exhaustion respawn failed:`, err);
|
|
@@ -2858,7 +2863,7 @@ getHubClassifierDeps) {
|
|
|
2858
2863
|
return;
|
|
2859
2864
|
}
|
|
2860
2865
|
const _spawnTokB = spawningTopics.add(topicId);
|
|
2861
|
-
sendDeterministicTelegramNotice(telegram, 'session-lifecycle', topicId,
|
|
2866
|
+
sendDeterministicTelegramNotice(telegram, 'session-lifecycle', topicId, SESSION_RESTARTING_NOTICE).catch(() => {
|
|
2862
2867
|
DegradationReporter.getInstance().report({
|
|
2863
2868
|
feature: 'telegram-session-lifecycle-notice',
|
|
2864
2869
|
primary: 'Confirm delivery of the recorded session lifecycle notice',
|
|
@@ -2867,7 +2872,7 @@ getHubClassifierDeps) {
|
|
|
2867
2872
|
impact: 'The notice may be held or uncertain; no replacement send is authorized',
|
|
2868
2873
|
});
|
|
2869
2874
|
});
|
|
2870
|
-
respawnSessionForTopic(sessionManager, telegram, targetSession, topicId, text, topicMemory, resolvedUser ?? undefined)
|
|
2875
|
+
respawnSessionForTopic(sessionManager, telegram, targetSession, topicId, text, topicMemory, resolvedUser ?? undefined, undefined, { quietAfterRespawn: true })
|
|
2871
2876
|
.then(() => confirmLocalSessionPoolClaim())
|
|
2872
2877
|
.catch(err => {
|
|
2873
2878
|
console.error(`[telegram→session] Respawn failed:`, err);
|
|
@@ -8954,6 +8959,24 @@ export async function startServer(options) {
|
|
|
8954
8959
|
try {
|
|
8955
8960
|
const { SlackAdapter } = await import('../messaging/slack/index.js');
|
|
8956
8961
|
slackAdapter = new SlackAdapter(slackConfig.config, config.stateDir);
|
|
8962
|
+
// message-origin-all-platforms §3: the Slack origin ledger's machine identity, the live
|
|
8963
|
+
// fail-closed switch (operator exception) and the degradation reporter.
|
|
8964
|
+
{
|
|
8965
|
+
const { localMachineIdentity } = await import('../server/replyOrigin.js');
|
|
8966
|
+
const originMachine = localMachineIdentity(config.stateDir);
|
|
8967
|
+
slackAdapter.setOriginContext({
|
|
8968
|
+
machine: () => {
|
|
8969
|
+
const local = originMachine();
|
|
8970
|
+
return { id: local.id, name: telegramOriginBoot?.runtime.options.identity.originMachineName ?? local.name };
|
|
8971
|
+
},
|
|
8972
|
+
failClosed: () => liveConfig.get('messageOrigin.recording.slackFailClosed', true) !== false,
|
|
8973
|
+
report: (feature, detail) => DegradationReporter.getInstance().report({
|
|
8974
|
+
feature, primary: 'Every Slack message records which machine, harness and model wrote it before it is sent',
|
|
8975
|
+
fallback: 'The send is refused (or, with messageOrigin.recording.slackFailClosed false, sent unrecorded)',
|
|
8976
|
+
reason: detail, impact: 'Slack messages may not be delivered until the origin ledger can be written.',
|
|
8977
|
+
}),
|
|
8978
|
+
});
|
|
8979
|
+
}
|
|
8957
8980
|
// ── Slack org permission gate (Slice 0) — DARK by default ──────────
|
|
8958
8981
|
// Attached only when `permissionGate.observeOnly` (or `.enforce`) is set in
|
|
8959
8982
|
// the Slack config. Observe-only logs what the gate WOULD decide for every
|
|
@@ -24987,12 +25010,21 @@ export async function startServer(options) {
|
|
|
24987
25010
|
});
|
|
24988
25011
|
},
|
|
24989
25012
|
markInterrupted: (topic) => { autoMod.markAutonomousInterruptedMidTask(config.stateDir, topic); },
|
|
24990
|
-
notifyInterrupted: (topic, target
|
|
25013
|
+
notifyInterrupted: (topic, target) => {
|
|
24991
25014
|
const topicNum = Number(topic);
|
|
24992
25015
|
if (!telegram || !Number.isFinite(topicNum))
|
|
24993
25016
|
return;
|
|
25017
|
+
// Sent even when the session announced the move itself: that note is
|
|
25018
|
+
// optional and written BEFORE the cut, so this is the only record that
|
|
25019
|
+
// the last step was cut off. The person sees the machine's nickname
|
|
25020
|
+
// (never its id — Rule 7); the bound and timings stay in the audit row.
|
|
25021
|
+
let targetName = null;
|
|
25022
|
+
try {
|
|
25023
|
+
targetName = meshIdMgr.getActiveMachines().find((m) => m.machineId === target)?.entry.nickname ?? null;
|
|
25024
|
+
}
|
|
25025
|
+
catch { /* @silent-fallback-ok — unresolved name is stated plainly ("another machine"), per Rule 7 */ }
|
|
24994
25026
|
void telegram
|
|
24995
|
-
.sendToTopic(topicNum,
|
|
25027
|
+
.sendToTopic(topicNum, movedMachinesMidStepNotice(targetName))
|
|
24996
25028
|
.catch(() => { });
|
|
24997
25029
|
},
|
|
24998
25030
|
transferDeliveryLedger: createInboundDeliveryTransferStep({
|