instar 1.3.894 → 1.3.896

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.
Files changed (41) hide show
  1. package/dist/core/FailureEpisodeLatch.d.ts +8 -0
  2. package/dist/core/FailureEpisodeLatch.d.ts.map +1 -1
  3. package/dist/core/FailureEpisodeLatch.js +14 -0
  4. package/dist/core/FailureEpisodeLatch.js.map +1 -1
  5. package/dist/core/SelfHealGate.d.ts +148 -0
  6. package/dist/core/SelfHealGate.d.ts.map +1 -0
  7. package/dist/core/SelfHealGate.js +391 -0
  8. package/dist/core/SelfHealGate.js.map +1 -0
  9. package/dist/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.d.ts +19 -0
  10. package/dist/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.d.ts.map +1 -0
  11. package/dist/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.js +118 -0
  12. package/dist/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.js.map +1 -0
  13. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.d.ts +11 -1
  14. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.d.ts.map +1 -1
  15. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.js +88 -25
  16. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.js.map +1 -1
  17. package/dist/messaging/slack/SlackAdapter.js +15 -14
  18. package/dist/messaging/slack/SlackAdapter.js.map +1 -1
  19. package/dist/messaging/slack/types.d.ts +7 -4
  20. package/dist/messaging/slack/types.d.ts.map +1 -1
  21. package/dist/messaging/slack/types.js.map +1 -1
  22. package/dist/monitoring/selfaction/policies.d.ts.map +1 -1
  23. package/dist/monitoring/selfaction/policies.js +14 -0
  24. package/dist/monitoring/selfaction/policies.js.map +1 -1
  25. package/dist/permissions/AmbientContributionGate.d.ts +14 -17
  26. package/dist/permissions/AmbientContributionGate.d.ts.map +1 -1
  27. package/dist/permissions/AmbientContributionGate.js +50 -56
  28. package/dist/permissions/AmbientContributionGate.js.map +1 -1
  29. package/dist/server/AgentServer.d.ts.map +1 -1
  30. package/dist/server/AgentServer.js +24 -6
  31. package/dist/server/AgentServer.js.map +1 -1
  32. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  33. package/dist/testing/selfActionRegistry.js +25 -0
  34. package/dist/testing/selfActionRegistry.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/data/builtin-manifest.json +3 -3
  37. package/src/data/state-coherence-registry.json +17 -0
  38. package/upgrades/1.3.895.md +23 -0
  39. package/upgrades/1.3.896.md +25 -0
  40. package/upgrades/side-effects/self-heal-gate.md +87 -0
  41. package/upgrades/side-effects/slack-considered-acknowledgment-v1.md +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelfHealGate.js","sourceRoot":"","sources":["../../src/core/SelfHealGate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type SelfHealNotice } from '../../core/SelfHealGate.js';
2
+ export interface FeedbackDefaultsHealOptions {
3
+ stateDir: string;
4
+ developmentAgent: boolean;
5
+ bootId: string;
6
+ currentFence: () => string | null;
7
+ notify: (notice: SelfHealNotice) => void | Promise<void>;
8
+ audit?: (event: {
9
+ event: string;
10
+ reason?: string;
11
+ elapsedMs?: number;
12
+ }) => void;
13
+ }
14
+ export declare function requestSelfHealRestart(stateDir: string, stableRequestId: string): boolean;
15
+ export declare function runFeedbackFactoryDefaultsSelfHeal(options: FeedbackDefaultsHealOptions): Promise<{
16
+ attempted: boolean;
17
+ outcome: string;
18
+ }>;
19
+ //# sourceMappingURL=FeedbackFactoryDefaultsSelfHeal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackFactoryDefaultsSelfHeal.d.ts","sourceRoot":"","sources":["../../../src/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4C,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAU3G,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACjF;AAID,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAkBzF;AAED,wBAAsB,kCAAkC,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAyC/I"}
@@ -0,0 +1,118 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { SelfHealGate, SqliteSelfHealEpisodeStore } from '../../core/SelfHealGate.js';
5
+ import { SafeFsExecutor } from '../../core/SafeFsExecutor.js';
6
+ import { consumeAdmissionToken, governor } from '../../monitoring/selfaction/governor.js';
7
+ import { ensureFeedbackFactoryGeneratedDefaults, inspectFeedbackFactoryGeneratedDefaults } from './FeedbackFactoryGeneratedDefaults.js';
8
+ /* @self-action-controller: feedback-factory-generated-defaults-heal */
9
+ const feedbackDefaultsGovernor = governor.for('feedback-factory-generated-defaults-heal');
10
+ function deriveTargetKey(target) { return target; }
11
+ export function requestSelfHealRestart(stateDir, stableRequestId) {
12
+ const dir = path.join(stateDir, 'state');
13
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
14
+ const destination = path.join(dir, 'restart-requested.json');
15
+ if (fs.existsSync(destination)) {
16
+ try {
17
+ return JSON.parse(fs.readFileSync(destination, 'utf8')).requestId === stableRequestId;
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ const tmp = path.join(dir, `.restart-request.${process.pid}.${crypto.randomBytes(8).toString('hex')}.tmp`);
24
+ const body = JSON.stringify({ requestedAt: new Date().toISOString(), requestedBy: 'self-heal-gate', requestId: stableRequestId, plannedRestart: true, pid: process.pid }, null, 2);
25
+ try {
26
+ const fd = fs.openSync(tmp, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL | (fs.constants.O_NOFOLLOW ?? 0), 0o600);
27
+ try {
28
+ fs.writeFileSync(fd, body);
29
+ fs.fsyncSync(fd);
30
+ }
31
+ finally {
32
+ fs.closeSync(fd);
33
+ }
34
+ try {
35
+ fs.linkSync(tmp, destination);
36
+ }
37
+ catch (error) {
38
+ if (error.code !== 'EEXIST')
39
+ throw error;
40
+ return JSON.parse(fs.readFileSync(destination, 'utf8')).requestId === stableRequestId;
41
+ }
42
+ return true;
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ finally {
48
+ try {
49
+ SafeFsExecutor.safeUnlinkSync(tmp, { operation: 'feedback-defaults-self-heal restart temp cleanup' });
50
+ }
51
+ catch { /* already absent */ }
52
+ }
53
+ }
54
+ export async function runFeedbackFactoryDefaultsSelfHeal(options) {
55
+ const stateFailure = async () => {
56
+ try {
57
+ await options.notify({ id: `self-heal:feedback-factory-generated-defaults-heal:state-failure:${options.bootId}`, controllerId: 'feedback-factory-generated-defaults-heal', reason: 'state-failure', priority: 'HIGH' });
58
+ }
59
+ catch {
60
+ options.audit?.({ event: 'notice-enqueue-failed', reason: 'state-failure' });
61
+ }
62
+ options.audit?.({ event: 'state-failure', reason: 'store-preflight-failed' });
63
+ return { attempted: false, outcome: 'state-failure' };
64
+ };
65
+ let store;
66
+ try {
67
+ store = new SqliteSelfHealEpisodeStore(path.join(options.stateDir, 'state', 'self-heal-gate.db'));
68
+ }
69
+ catch {
70
+ return stateFailure();
71
+ }
72
+ const makeContext = () => ({ inspection: inspectFeedbackFactoryGeneratedDefaults(options.stateDir, options.developmentAgent), fence: options.currentFence() });
73
+ const gate = new SelfHealGate({
74
+ id: 'feedback-factory-generated-defaults-heal', controllerResource: 'hardware-bound', episodeAuthority: 'durable-machine-local', classId: 'feedback-generated-defaults',
75
+ severity: (ctx) => ctx.inspection.posture === 'unsafe' ? 'unknown' : 'recoverable', dedupeKey: () => 'generated-defaults',
76
+ eligible: () => { const fence = options.currentFence(); return { eligible: fence !== null, fence }; },
77
+ remediation: () => {
78
+ const before = inspectFeedbackFactoryGeneratedDefaults(options.stateDir, options.developmentAgent);
79
+ if (before.posture === 'unsafe')
80
+ return { outcome: 'not-healed', evidence: before.reason };
81
+ if (before.posture === 'healthy')
82
+ return { outcome: 'healed', evidence: 'already-healthy' };
83
+ const result = ensureFeedbackFactoryGeneratedDefaults(options.stateDir, options.developmentAgent);
84
+ const after = inspectFeedbackFactoryGeneratedDefaults(options.stateDir, options.developmentAgent);
85
+ if (after.posture !== 'healthy')
86
+ return { outcome: 'not-healed', evidence: 'verification-failed' };
87
+ return result.changed ? { outcome: 'pending-restart', evidence: 'repaired' } : { outcome: 'healed', evidence: 'already-healthy' };
88
+ },
89
+ restartVerified: (ctx) => ctx.inspection.posture === 'healthy', maxAttempts: 3, maxWallClockMs: 10 * 60_000,
90
+ backoffMs: (attempt) => [0, 30_000, 120_000][Math.max(0, attempt - 1)] ?? 120_000, notificationLatencyCeilingMs: 2 * 60_000,
91
+ flap: { maxRecoveries: 3, windowMs: 24 * 60 * 60_000 }, remediationActions: { operation: 'generated-defaults-repair', idempotencyGuard: 'exclusive-temp-atomic-rename', compensation: 'destination-unchanged-before-rename' },
92
+ }, {
93
+ admit: (target, admitOptions) => feedbackDefaultsGovernor.admit(deriveTargetKey(target), admitOptions), consumeToken: consumeAdmissionToken, notify: options.notify,
94
+ audit: (event) => options.audit?.({ event: event.event, reason: event.reason, elapsedMs: event.elapsedMs }), episodeStore: store,
95
+ bootId: options.bootId, requestRestart: (id) => requestSelfHealRestart(options.stateDir, id),
96
+ });
97
+ const ctx = makeContext();
98
+ if (ctx.inspection.posture === 'fleet-dark') {
99
+ store.close();
100
+ return { attempted: false, outcome: 'fleet-dark' };
101
+ }
102
+ let restartVerificationRequired;
103
+ try {
104
+ restartVerificationRequired = gate.needsRestartVerification(ctx);
105
+ }
106
+ catch {
107
+ store.close();
108
+ return stateFailure();
109
+ }
110
+ if (ctx.inspection.posture === 'healthy' && !restartVerificationRequired) {
111
+ store.close();
112
+ return { attempted: false, outcome: 'healthy' };
113
+ }
114
+ const result = await gate.attempt(ctx);
115
+ // Keep the store alive for an enforce-mode governor queue continuation.
116
+ return { attempted: true, outcome: result.outcome };
117
+ }
118
+ //# sourceMappingURL=FeedbackFactoryDefaultsSelfHeal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackFactoryDefaultsSelfHeal.js","sourceRoot":"","sources":["../../../src/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,17 @@ export interface FeedbackFactoryGeneratedDefaults {
9
9
  };
10
10
  };
11
11
  }
12
- export declare function inspectFeedbackFactoryGeneratedDefaults(stateDir: string, developmentAgent: boolean): 'fleet-dark' | 'healthy' | 'repair-needed';
12
+ export type GeneratedDefaultsInspection = {
13
+ posture: 'fleet-dark' | 'healthy';
14
+ reason: 'fleet-dark' | 'healthy';
15
+ } | {
16
+ posture: 'repair-needed';
17
+ reason: 'source-absent' | 'schema-stale';
18
+ } | {
19
+ posture: 'unsafe';
20
+ reason: 'malformed-json' | 'access-denied' | 'io-error' | 'symlink-refused' | 'non-regular-refused';
21
+ };
22
+ export declare function inspectFeedbackFactoryGeneratedDefaults(stateDir: string, developmentAgent: boolean): GeneratedDefaultsInspection;
13
23
  export declare function ensureFeedbackFactoryGeneratedDefaults(stateDir: string, developmentAgent: boolean): {
14
24
  posture: 'fleet-dark' | 'healthy' | 'repaired';
15
25
  changed: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackFactoryGeneratedDefaults.d.ts","sourceRoot":"","sources":["../../../src/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,CAAC,CAAC;IACjB,eAAe,EAAE;QAAE,UAAU,EAAE;YAAE,OAAO,EAAE,IAAI,CAAA;SAAE,CAAC;QAAC,KAAK,EAAE;YAAE,OAAO,EAAE,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;CAC9E;AAOD,wBAAgB,uCAAuC,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,GAAG,eAAe,CAS/I;AAED,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG;IACnG,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAC/E,IAAI,EAAE;QAAE,aAAa,CAAC,EAAE;YAAE,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,CAAC,CAAA;SAAE,CAAC;QAAC,iBAAiB,CAAC,EAAE;YAAE,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,IAAI,CAAA;SAAE,CAAC;QAAC,YAAY,CAAC,EAAE;YAAE,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;CAChK,CAoBA"}
1
+ {"version":3,"file":"FeedbackFactoryGeneratedDefaults.d.ts","sourceRoot":"","sources":["../../../src/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,CAAC,CAAC;IACjB,eAAe,EAAE;QAAE,UAAU,EAAE;YAAE,OAAO,EAAE,IAAI,CAAA;SAAE,CAAC;QAAC,KAAK,EAAE;YAAE,OAAO,EAAE,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;CAC9E;AAGD,MAAM,MAAM,2BAA2B,GACnC;IAAE,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,GACvE;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAAA;CAAE,GACtE;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,GAAG,UAAU,GAAG,iBAAiB,GAAG,qBAAqB,CAAA;CAAE,CAAC;AAe/H,wBAAgB,uCAAuC,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,2BAA2B,CAehI;AAED,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG;IACnG,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAC/E,IAAI,EAAE;QAAE,aAAa,CAAC,EAAE;YAAE,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,CAAC,CAAA;SAAE,CAAC;QAAC,iBAAiB,CAAC,EAAE;YAAE,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,IAAI,CAAA;SAAE,CAAC;QAAC,YAAY,CAAC,EAAE;YAAE,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;CAChK,CAmCA"}
@@ -1,47 +1,110 @@
1
+ import crypto from 'node:crypto';
1
2
  import fs from 'node:fs';
2
3
  import path from 'node:path';
3
- const EXPECTED = {
4
- schemaVersion: 1,
5
- feedbackFactory: { processing: { enabled: true }, drain: { enabled: true } },
6
- };
4
+ import { SafeFsExecutor } from '../../core/SafeFsExecutor.js';
5
+ const EXPECTED = { schemaVersion: 1, feedbackFactory: { processing: { enabled: true }, drain: { enabled: true } } };
6
+ function targetPath(stateDir) { return path.join(stateDir, 'state', 'generated-feature-defaults.json'); }
7
+ function classifyError(error) {
8
+ const code = error?.code;
9
+ if (code === 'EACCES' || code === 'EPERM')
10
+ return 'access-denied';
11
+ return 'io-error';
12
+ }
13
+ function isExpected(parsed) {
14
+ const ff = parsed.feedbackFactory;
15
+ const processing = ff?.processing;
16
+ const drain = ff?.drain;
17
+ return parsed.schemaVersion === 1 && processing?.enabled === true && drain?.enabled === true;
18
+ }
7
19
  export function inspectFeedbackFactoryGeneratedDefaults(stateDir, developmentAgent) {
8
20
  if (!developmentAgent)
9
- return 'fleet-dark';
21
+ return { posture: 'fleet-dark', reason: 'fleet-dark' };
22
+ const filePath = targetPath(stateDir);
10
23
  try {
11
- const parsed = JSON.parse(fs.readFileSync(path.join(stateDir, 'state', 'generated-feature-defaults.json'), 'utf8'));
12
- const ff = parsed.feedbackFactory;
13
- const processing = ff?.processing;
14
- const drain = ff?.drain;
15
- return parsed.schemaVersion === 1 && processing?.enabled === true && drain?.enabled === true ? 'healthy' : 'repair-needed';
24
+ const st = fs.lstatSync(filePath);
25
+ if (st.isSymbolicLink())
26
+ return { posture: 'unsafe', reason: 'symlink-refused' };
27
+ if (!st.isFile())
28
+ return { posture: 'unsafe', reason: 'non-regular-refused' };
29
+ let parsed;
30
+ try {
31
+ parsed = JSON.parse(fs.readFileSync(filePath, 'utf8'));
32
+ }
33
+ catch (error) {
34
+ return error.code ? { posture: 'unsafe', reason: classifyError(error) } : { posture: 'unsafe', reason: 'malformed-json' };
35
+ }
36
+ return isExpected(parsed) ? { posture: 'healthy', reason: 'healthy' } : { posture: 'repair-needed', reason: 'schema-stale' };
16
37
  }
17
- catch {
18
- return 'repair-needed';
38
+ catch (error) {
39
+ if (error.code === 'ENOENT')
40
+ return { posture: 'repair-needed', reason: 'source-absent' };
41
+ return { posture: 'unsafe', reason: classifyError(error) };
19
42
  }
20
43
  }
21
44
  export function ensureFeedbackFactoryGeneratedDefaults(stateDir, developmentAgent) {
22
- const filePath = path.join(stateDir, 'state', 'generated-feature-defaults.json');
45
+ const filePath = targetPath(stateDir);
23
46
  if (!developmentAgent)
24
47
  return { posture: 'fleet-dark', changed: false, path: filePath, diff: {} };
25
- let before = null;
26
- try {
27
- before = JSON.parse(fs.readFileSync(filePath, 'utf8'));
48
+ const inspection = inspectFeedbackFactoryGeneratedDefaults(stateDir, true);
49
+ if (inspection.posture === 'unsafe')
50
+ throw new Error(`generated defaults repair refused: ${inspection.reason}`);
51
+ if (inspection.posture === 'healthy')
52
+ return { posture: 'healthy', changed: false, path: filePath, diff: {} };
53
+ const root = fs.realpathSync(stateDir);
54
+ if (fs.lstatSync(root).isSymbolicLink() || !fs.lstatSync(root).isDirectory())
55
+ throw new Error('generated defaults state root is unsafe');
56
+ const dir = path.join(root, 'state');
57
+ if (fs.existsSync(dir)) {
58
+ const st = fs.lstatSync(dir);
59
+ if (st.isSymbolicLink() || !st.isDirectory())
60
+ throw new Error('generated defaults parent is unsafe');
28
61
  }
29
- catch { /* absent/stale */ }
62
+ else
63
+ fs.mkdirSync(dir, { mode: 0o700 });
64
+ const anchored = path.join(dir, 'generated-feature-defaults.json');
65
+ const rel = path.relative(root, anchored);
66
+ if (rel.startsWith('..') || path.isAbsolute(rel))
67
+ throw new Error('generated defaults path escaped state root');
68
+ let before = null;
69
+ if (inspection.reason === 'schema-stale')
70
+ before = JSON.parse(fs.readFileSync(anchored, 'utf8'));
30
71
  const ff = before?.feedbackFactory;
31
72
  const processing = ff?.processing;
32
73
  const drain = ff?.drain;
33
- const valid = before?.schemaVersion === 1 && processing?.enabled === true && drain?.enabled === true;
34
- if (valid)
35
- return { posture: 'healthy', changed: false, path: filePath, diff: {} };
36
74
  const diff = {
37
75
  ...(before?.schemaVersion === 1 ? {} : { schemaVersion: { before: before?.schemaVersion, after: 1 } }),
38
76
  ...(processing?.enabled === true ? {} : { processingEnabled: { before: processing?.enabled, after: true } }),
39
77
  ...(drain?.enabled === true ? {} : { drainEnabled: { before: drain?.enabled, after: true } }),
40
78
  };
41
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
42
- const tmp = `${filePath}.${process.pid}.tmp`;
43
- fs.writeFileSync(tmp, `${JSON.stringify(EXPECTED, null, 2)}\n`, { mode: 0o600 });
44
- fs.renameSync(tmp, filePath);
45
- return { posture: 'repaired', changed: true, path: filePath, diff };
79
+ const tmp = path.join(dir, `.generated-feature-defaults.${process.pid}.${crypto.randomBytes(8).toString('hex')}.tmp`);
80
+ let fd = null;
81
+ try {
82
+ fd = fs.openSync(tmp, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL | (fs.constants.O_NOFOLLOW ?? 0), 0o600);
83
+ fs.writeFileSync(fd, `${JSON.stringify(EXPECTED, null, 2)}\n`);
84
+ fs.fsyncSync(fd);
85
+ fs.closeSync(fd);
86
+ fd = null;
87
+ fs.renameSync(tmp, anchored);
88
+ const dirFd = fs.openSync(dir, fs.constants.O_RDONLY);
89
+ try {
90
+ fs.fsyncSync(dirFd);
91
+ }
92
+ finally {
93
+ fs.closeSync(dirFd);
94
+ }
95
+ }
96
+ finally {
97
+ if (fd !== null)
98
+ try {
99
+ fs.closeSync(fd);
100
+ }
101
+ catch { /* already closed */ }
102
+ if (fs.existsSync(tmp))
103
+ try {
104
+ SafeFsExecutor.safeUnlinkSync(tmp, { operation: 'generated defaults exclusive temp cleanup' });
105
+ }
106
+ catch { /* cleanup best effort */ }
107
+ }
108
+ return { posture: 'repaired', changed: true, path: anchored, diff };
46
109
  }
47
110
  //# sourceMappingURL=FeedbackFactoryGeneratedDefaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackFactoryGeneratedDefaults.js","sourceRoot":"","sources":["../../../src/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FeedbackFactoryGeneratedDefaults.js","sourceRoot":"","sources":["../../../src/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.ts"],"names":[],"mappings":"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"}
@@ -1018,25 +1018,26 @@ export class SlackAdapter {
1018
1018
  }
1019
1019
  if (this.respondMode === 'mention-only' && !isDM && !this._isBotMentioned(text)) {
1020
1020
  // ── Ambient "should I speak?" gate (considered/ambient mode, §5.2) ──────────
1021
- // This is the ONLY change to undirected handling. The gate can ONLY make the
1022
- // agent quieter: it runs solely when (1) a gate is attached AND (2) this exact
1023
- // channel is explicitly opted into proactive contribution. For every other
1024
- // channel and whenever no gate is attached at all behavior is byte-for-byte
1025
- // the mention-only drop below. FAIL-TO-SILENCE: any failure inside the gate
1026
- // returns speak=false, so we fall through to the same drop. A speak=true here
1027
- // means the undirected message is processed exactly like a directed one
1028
- // (the code below this block is unchanged); directed messages never reach here.
1021
+ // This opt-in gate returns exactly one closed action: speak processes the
1022
+ // message downstream, react makes one fixed eyes-reaction attempt and returns,
1023
+ // and silent only retains bounded history. Every failure/unknown result fails
1024
+ // to silent. With no gate or no channel opt-in, behavior remains the ordinary
1025
+ // mention-only drop; directed messages never reach this branch.
1029
1026
  let ambientSpeak = false;
1030
1027
  if (this.ambientGate && this.ambientGate.isChannelEnabled(channelId)) {
1031
1028
  try {
1032
- const decision = await this.ambientGate.shouldSpeak({ channelId, text, channelName: undefined });
1033
- ambientSpeak = decision.speak === true;
1034
- if (ambientSpeak) {
1035
- // Consume one unit of the per-channel rolling-window budget only now that
1036
- // we've committed to processing this proactive turn.
1037
- this.ambientGate.recordSpoke(channelId);
1029
+ const decision = await this.ambientGate.decideAction({ channelId, text, channelName: undefined });
1030
+ ambientSpeak = decision.action === 'speak';
1031
+ if (decision.action === 'speak') {
1032
+ this.ambientGate.recordAction(channelId);
1038
1033
  console.log(`[slack] ambient gate cleared for ${channelId}: ${decision.reason}${decision.detail ? ` — ${decision.detail}` : ''}`);
1039
1034
  }
1035
+ else if (decision.action === 'react') {
1036
+ // Consume budget before the one fire-and-forget attempt. The existing
1037
+ // primitive contains failures; there is no retry, refund, or fallback.
1038
+ this.ambientGate.recordAction(channelId);
1039
+ this.addReaction(channelId, ts, 'eyes');
1040
+ }
1040
1041
  }
1041
1042
  catch {
1042
1043
  // Fail-to-silence: any unexpected throw at the call site stays silent too.