instar 0.28.33 → 0.28.41

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 (86) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +119 -47
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/CoherenceGate.d.ts +7 -0
  5. package/dist/core/CoherenceGate.d.ts.map +1 -1
  6. package/dist/core/CoherenceGate.js +7 -6
  7. package/dist/core/CoherenceGate.js.map +1 -1
  8. package/dist/core/CoherenceReviewer.d.ts +20 -5
  9. package/dist/core/CoherenceReviewer.d.ts.map +1 -1
  10. package/dist/core/CoherenceReviewer.js +36 -6
  11. package/dist/core/CoherenceReviewer.js.map +1 -1
  12. package/dist/core/MessagingToneGate.d.ts +42 -0
  13. package/dist/core/MessagingToneGate.d.ts.map +1 -0
  14. package/dist/core/MessagingToneGate.js +109 -0
  15. package/dist/core/MessagingToneGate.js.map +1 -0
  16. package/dist/core/SessionManager.d.ts +9 -0
  17. package/dist/core/SessionManager.d.ts.map +1 -1
  18. package/dist/core/SessionManager.js +18 -0
  19. package/dist/core/SessionManager.js.map +1 -1
  20. package/dist/messaging/TelegramAdapter.d.ts +8 -0
  21. package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
  22. package/dist/messaging/TelegramAdapter.js +42 -3
  23. package/dist/messaging/TelegramAdapter.js.map +1 -1
  24. package/dist/monitoring/CompactionSentinel.d.ts +143 -0
  25. package/dist/monitoring/CompactionSentinel.d.ts.map +1 -0
  26. package/dist/monitoring/CompactionSentinel.js +262 -0
  27. package/dist/monitoring/CompactionSentinel.js.map +1 -0
  28. package/dist/monitoring/SessionWatchdog.d.ts +26 -0
  29. package/dist/monitoring/SessionWatchdog.d.ts.map +1 -1
  30. package/dist/monitoring/SessionWatchdog.js +204 -26
  31. package/dist/monitoring/SessionWatchdog.js.map +1 -1
  32. package/dist/monitoring/probes/MessagingProbe.d.ts +4 -0
  33. package/dist/monitoring/probes/MessagingProbe.d.ts.map +1 -1
  34. package/dist/monitoring/probes/MessagingProbe.js +24 -8
  35. package/dist/monitoring/probes/MessagingProbe.js.map +1 -1
  36. package/dist/server/AgentServer.d.ts +1 -0
  37. package/dist/server/AgentServer.d.ts.map +1 -1
  38. package/dist/server/AgentServer.js +1 -0
  39. package/dist/server/AgentServer.js.map +1 -1
  40. package/dist/server/routes.d.ts +5 -0
  41. package/dist/server/routes.d.ts.map +1 -1
  42. package/dist/server/routes.js +92 -2
  43. package/dist/server/routes.js.map +1 -1
  44. package/dist/threadline/adapters/RESTServer.d.ts +7 -1
  45. package/dist/threadline/adapters/RESTServer.d.ts.map +1 -1
  46. package/dist/threadline/adapters/RESTServer.js +62 -1
  47. package/dist/threadline/adapters/RESTServer.js.map +1 -1
  48. package/dist/threadline/relay/OfflineQueue.js +1 -1
  49. package/dist/threadline/relay/OfflineQueue.js.map +1 -1
  50. package/package.json +1 -1
  51. package/scripts/check-upgrade-guide.js +9 -115
  52. package/scripts/upgrade-guide-validator.mjs +221 -0
  53. package/src/data/builtin-manifest.json +52 -52
  54. package/src/templates/scripts/imessage-reply.sh +16 -3
  55. package/src/templates/scripts/slack-reply.sh +10 -0
  56. package/src/templates/scripts/telegram-reply.sh +11 -0
  57. package/src/templates/scripts/whatsapp-reply.sh +10 -0
  58. package/upgrades/0.28.34.md +17 -0
  59. package/upgrades/0.28.36.md +40 -0
  60. package/upgrades/0.28.37.md +69 -0
  61. package/upgrades/0.28.38.md +41 -0
  62. package/upgrades/0.28.39.md +29 -0
  63. package/upgrades/0.28.40.md +32 -0
  64. package/upgrades/0.28.41.md +41 -0
  65. package/upgrades/NEXT.md +18 -0
  66. package/upgrades/0.28.10.md +0 -19
  67. package/upgrades/0.28.11.md +0 -19
  68. package/upgrades/0.28.13.md +0 -11
  69. package/upgrades/0.28.15.md +0 -11
  70. package/upgrades/0.28.18.md +0 -12
  71. package/upgrades/0.28.20.md +0 -19
  72. package/upgrades/0.28.21.md +0 -23
  73. package/upgrades/0.28.22.md +0 -23
  74. package/upgrades/0.28.23.md +0 -19
  75. package/upgrades/0.28.24.md +0 -18
  76. package/upgrades/0.28.25.md +0 -21
  77. package/upgrades/0.28.26.md +0 -20
  78. package/upgrades/0.28.27.md +0 -20
  79. package/upgrades/0.28.28.md +0 -20
  80. package/upgrades/0.28.30.md +0 -25
  81. package/upgrades/0.28.31.md +0 -38
  82. package/upgrades/0.28.32.md +0 -22
  83. package/upgrades/0.28.33.md +0 -22
  84. package/upgrades/0.28.5.md +0 -17
  85. package/upgrades/0.28.7.md +0 -24
  86. package/upgrades/0.28.8.md +0 -21
@@ -33,6 +33,8 @@ export interface RESTServerConfig {
33
33
  host?: string;
34
34
  tokenPath?: string;
35
35
  maxMessageHistoryPerThread?: number;
36
+ historyPath?: string;
37
+ persistHistory?: boolean;
36
38
  }
37
39
  export declare class ThreadlineRESTServer {
38
40
  private readonly client;
@@ -40,7 +42,8 @@ export declare class ThreadlineRESTServer {
40
42
  private server;
41
43
  private token;
42
44
  private running;
43
- /** In-memory thread history (for GET /threads/:id) */
45
+ private persistTimer;
46
+ /** Thread history (for GET /threads/:id). Hydrated from disk on start, persisted debounced. */
44
47
  private readonly threadHistory;
45
48
  constructor(client: ThreadlineClient, config?: Partial<RESTServerConfig>);
46
49
  /**
@@ -67,6 +70,9 @@ export declare class ThreadlineRESTServer {
67
70
  private handleListThreads;
68
71
  private handleGetThread;
69
72
  private handleDeleteThread;
73
+ private loadHistoryFromDisk;
74
+ private schedulePersist;
75
+ private persistHistoryToDisk;
70
76
  private getOrCreateToken;
71
77
  private readBody;
72
78
  private sendJson;
@@ -1 +1 @@
1
- {"version":3,"file":"RESTServer.d.ts","sourceRoot":"","sources":["../../../src/threadline/adapters/RESTServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,+BAA+B,CAAC;AAIvF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAID,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAS;IAExB,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;gBAE1D,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAuBxE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBvD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,OAAO,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAInD;IAID,OAAO,CAAC,aAAa;IA+CrB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;YAWV,cAAc;YAyBd,UAAU;IA4BxB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,QAAQ;CAIjB"}
1
+ {"version":3,"file":"RESTServer.d.ts","sourceRoot":"","sources":["../../../src/threadline/adapters/RESTServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,+BAA+B,CAAC;AAIvF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAID,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA8C;IAElE,+FAA+F;IAC/F,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;gBAE1D,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IA0BxE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBvD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,OAAO,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAInD;IAID,OAAO,CAAC,aAAa;IA+CrB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;YAWV,cAAc;YAyBd,UAAU;IA4BxB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,QAAQ;CAIjB"}
@@ -39,7 +39,8 @@ export class ThreadlineRESTServer {
39
39
  server = null;
40
40
  token = '';
41
41
  running = false;
42
- /** In-memory thread history (for GET /threads/:id) */
42
+ persistTimer = null;
43
+ /** Thread history (for GET /threads/:id). Hydrated from disk on start, persisted debounced. */
43
44
  threadHistory = new Map();
44
45
  constructor(client, config) {
45
46
  this.client = client;
@@ -48,6 +49,8 @@ export class ThreadlineRESTServer {
48
49
  host: config?.host ?? '127.0.0.1',
49
50
  tokenPath: config?.tokenPath ?? path.join(os.homedir(), '.threadline', 'api-token'),
50
51
  maxMessageHistoryPerThread: config?.maxMessageHistoryPerThread ?? 100,
52
+ historyPath: config?.historyPath ?? path.join(os.homedir(), '.threadline', 'thread-history.json'),
53
+ persistHistory: config?.persistHistory ?? true,
51
54
  };
52
55
  // Track incoming messages for thread history
53
56
  this.client.on('message', (msg) => {
@@ -60,6 +63,7 @@ export class ThreadlineRESTServer {
60
63
  if (history.length > this.config.maxMessageHistoryPerThread) {
61
64
  history.shift();
62
65
  }
66
+ this.schedulePersist();
63
67
  });
64
68
  }
65
69
  /**
@@ -70,6 +74,8 @@ export class ThreadlineRESTServer {
70
74
  throw new Error('Server already running');
71
75
  // Get or create auth token
72
76
  this.token = this.getOrCreateToken();
77
+ // Hydrate thread history from disk (survives restarts)
78
+ this.loadHistoryFromDisk();
73
79
  return new Promise((resolve) => {
74
80
  this.server = http.createServer((req, res) => {
75
81
  this.handleRequest(req, res);
@@ -86,6 +92,12 @@ export class ThreadlineRESTServer {
86
92
  async stop() {
87
93
  if (!this.running || !this.server)
88
94
  return;
95
+ // Flush any pending persist before shutdown
96
+ if (this.persistTimer) {
97
+ clearTimeout(this.persistTimer);
98
+ this.persistTimer = null;
99
+ this.persistHistoryToDisk();
100
+ }
89
101
  return new Promise((resolve) => {
90
102
  this.server.close(() => {
91
103
  this.server = null;
@@ -251,8 +263,57 @@ export class ThreadlineRESTServer {
251
263
  }
252
264
  handleDeleteThread(res, threadId) {
253
265
  const deleted = this.threadHistory.delete(threadId);
266
+ if (deleted)
267
+ this.schedulePersist();
254
268
  this.sendJson(res, 200, { deleted, threadId });
255
269
  }
270
+ // ── Thread History Persistence ─────────────────────────────────────
271
+ loadHistoryFromDisk() {
272
+ if (!this.config.persistHistory)
273
+ return;
274
+ try {
275
+ const raw = fs.readFileSync(this.config.historyPath, 'utf-8');
276
+ const data = JSON.parse(raw);
277
+ for (const [threadId, messages] of Object.entries(data)) {
278
+ if (Array.isArray(messages)) {
279
+ const trimmed = messages.slice(-this.config.maxMessageHistoryPerThread);
280
+ this.threadHistory.set(threadId, trimmed);
281
+ }
282
+ }
283
+ }
284
+ catch {
285
+ // No history file yet, or unreadable — start fresh
286
+ }
287
+ }
288
+ schedulePersist() {
289
+ if (!this.config.persistHistory)
290
+ return;
291
+ if (this.persistTimer)
292
+ return;
293
+ // Debounce writes to avoid thrashing on message bursts
294
+ this.persistTimer = setTimeout(() => {
295
+ this.persistTimer = null;
296
+ this.persistHistoryToDisk();
297
+ }, 1000);
298
+ }
299
+ persistHistoryToDisk() {
300
+ if (!this.config.persistHistory)
301
+ return;
302
+ try {
303
+ const dir = path.dirname(this.config.historyPath);
304
+ fs.mkdirSync(dir, { recursive: true });
305
+ const data = {};
306
+ for (const [threadId, messages] of this.threadHistory) {
307
+ data[threadId] = messages;
308
+ }
309
+ const tmp = `${this.config.historyPath}.tmp`;
310
+ fs.writeFileSync(tmp, JSON.stringify(data), { mode: 0o600 });
311
+ fs.renameSync(tmp, this.config.historyPath);
312
+ }
313
+ catch {
314
+ // Persistence is best-effort; don't crash the server if disk is full
315
+ }
316
+ }
256
317
  // ── Helpers ────────────────────────────────────────────────────────
257
318
  getOrCreateToken() {
258
319
  const tokenDir = path.dirname(this.config.tokenPath);
@@ -1 +1 @@
1
- {"version":3,"file":"RESTServer.js","sourceRoot":"","sources":["../../../src/threadline/adapters/RESTServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RESTServer.js","sourceRoot":"","sources":["../../../src/threadline/adapters/RESTServer.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  */
9
9
  // ── In-Memory Implementation ─────────────────────────────────────────
10
10
  const DEFAULT_CONFIG = {
11
- defaultTtlMs: 3_600_000, // 1 hour
11
+ defaultTtlMs: 86_400_000, // 24 hours
12
12
  maxPerSenderPerRecipient: 100,
13
13
  maxPerRecipient: 500,
14
14
  maxPayloadBytesPerRecipient: 10 * 1024 * 1024, // 10MB
@@ -1 +1 @@
1
- {"version":3,"file":"OfflineQueue.js","sourceRoot":"","sources":["../../../src/threadline/relay/OfflineQueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OfflineQueue.js","sourceRoot":"","sources":["../../../src/threadline/relay/OfflineQueue.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "0.28.33",
3
+ "version": "0.28.41",
4
4
  "description": "Persistent autonomy infrastructure for AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -31,6 +31,12 @@
31
31
  import fs from 'node:fs';
32
32
  import path from 'node:path';
33
33
  import { fileURLToPath } from 'node:url';
34
+ import {
35
+ REQUIRED_SECTIONS,
36
+ NEXT_TEMPLATE,
37
+ validateGuideContent,
38
+ parseBumpType,
39
+ } from './upgrade-guide-validator.mjs';
34
40
 
35
41
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
36
42
  const ROOT = path.resolve(__dirname, '..');
@@ -42,125 +48,13 @@ const nextPath = path.join(ROOT, 'upgrades', 'NEXT.md');
42
48
  const guideExists = fs.existsSync(guidePath);
43
49
  const nextExists = fs.existsSync(nextPath);
44
50
 
45
- // Required sections for a well-formed guide
46
- const REQUIRED_SECTIONS = [
47
- '## What Changed',
48
- '## What to Tell Your User',
49
- '## Summary of New Capabilities',
50
- ];
51
-
52
- const MIN_LENGTH = 200;
53
-
54
- // Template for a fresh NEXT.md after finalization
55
- const NEXT_TEMPLATE = `# Upgrade Guide — vNEXT
56
-
57
- <!-- bump: patch -->
58
- <!-- Valid values: patch, minor, major -->
59
- <!-- patch = bug fixes, refactors, test additions, doc updates -->
60
- <!-- minor = new features, new APIs, new capabilities (backwards-compatible) -->
61
- <!-- major = breaking changes to existing APIs or behavior -->
62
-
63
- ## What Changed
64
-
65
- <!-- Describe what changed technically. What new features, APIs, behavioral changes? -->
66
- <!-- Write this for the AGENT — they need to understand the system deeply. -->
67
-
68
- ## What to Tell Your User
69
-
70
- <!-- Write talking points the agent should relay to their user. -->
71
- <!-- This should be warm, conversational, user-facing — not a changelog. -->
72
- <!-- Focus on what THEY can now do, not internal plumbing. -->
73
- <!-- -->
74
- <!-- PROHIBITED in this section (will fail validation): -->
75
- <!-- camelCase config keys: silentReject, maxRetries, telegramNotify -->
76
- <!-- Inline code backtick references like silentReject: false -->
77
- <!-- Fenced code blocks -->
78
- <!-- Instructions to edit files or run commands -->
79
- <!-- -->
80
- <!-- CORRECT style: "I can turn that on for you" not "set X to false" -->
81
- <!-- The agent relays this to their user — keep it human. -->
82
-
83
- - **[Feature name]**: "[Brief, friendly description of what this means for the user]"
84
-
85
- ## Summary of New Capabilities
86
-
87
- | Capability | How to Use |
88
- |-----------|-----------|
89
- | [Capability] | [Endpoint, command, or "automatic"] |
90
- `;
91
-
92
51
  /**
93
- * Validate a guide file and return any issues found.
52
+ * Validate a guide file. Thin wrapper around validateGuideContent that handles
53
+ * the file read.
94
54
  */
95
55
  function validateGuide(filePath) {
96
56
  const content = fs.readFileSync(filePath, 'utf-8');
97
- const issues = [];
98
-
99
- for (const section of REQUIRED_SECTIONS) {
100
- if (!content.includes(section)) {
101
- issues.push(`missing "${section}" section`);
102
- }
103
- }
104
-
105
- if (content.length < MIN_LENGTH) {
106
- issues.push(`guide is too short (${content.length} chars, minimum ${MIN_LENGTH}) — probably incomplete`);
107
- }
108
-
109
- // Check for template placeholders that were never filled in
110
- if (content.includes('<!-- Describe what changed')) {
111
- issues.push(`"What Changed" section still contains template placeholder — fill it in`);
112
- }
113
- if (content.includes('[Feature name]') || content.includes('[Brief, friendly description')) {
114
- issues.push(`"What to Tell Your User" section still contains template placeholder — fill it in`);
115
- }
116
- if (content.includes('[Capability]') && content.includes('[Endpoint, command')) {
117
- issues.push(`"Summary of New Capabilities" section still contains template placeholder — fill it in`);
118
- }
119
-
120
- // Validate "What to Tell Your User" section for technical leakage.
121
- // This section is relayed verbatim to users — it must be conversational, not a config reference.
122
- const userSectionMatch = content.match(/## What to Tell Your User([\s\S]*?)(?:##|$)/);
123
- if (userSectionMatch) {
124
- const userSection = userSectionMatch[1];
125
-
126
- // Detect camelCase config key references (e.g. silentReject, maxRetries, telegramNotify)
127
- const camelCaseConfigKey = /\b[a-z]+[A-Z][a-zA-Z]+\s*(?::|=)/.test(userSection);
128
- if (camelCaseConfigKey) {
129
- issues.push(
130
- `"What to Tell Your User" contains a camelCase config key reference (e.g. "silentReject: false"). ` +
131
- `Users should never be told to edit config directly. ` +
132
- `Rephrase conversationally: "I can turn that on for you" not "set silentReject: false".`
133
- );
134
- }
135
-
136
- // Detect inline code blocks — config syntax, CLI commands, file paths
137
- const hasInlineCode = /`[^`]+`/.test(userSection);
138
- if (hasInlineCode) {
139
- issues.push(
140
- `"What to Tell Your User" contains inline code (\`...\`). ` +
141
- `Remove code formatting — user-facing language should be plain and conversational.`
142
- );
143
- }
144
-
145
- // Detect fenced code blocks
146
- if (/```/.test(userSection)) {
147
- issues.push(
148
- `"What to Tell Your User" contains a fenced code block. ` +
149
- `This section is for user-facing narrative — move technical examples to "What Changed".`
150
- );
151
- }
152
- }
153
-
154
- return issues;
155
- }
156
-
157
- /**
158
- * Parse the declared bump type from a guide's <!-- bump: TYPE --> comment.
159
- * Returns 'patch' | 'minor' | 'major' | null.
160
- */
161
- function parseBumpType(content) {
162
- const match = /<!--\s*bump:\s*(patch|minor|major)\s*-->/.exec(content);
163
- return match ? match[1] : null;
57
+ return validateGuideContent(content);
164
58
  }
165
59
 
166
60
  /**
@@ -0,0 +1,221 @@
1
+ // Pure validation logic for upgrade guides — no filesystem side effects.
2
+ // The CLI entry point (check-upgrade-guide.js) wraps this with I/O.
3
+ // Extracted for unit testability.
4
+
5
+ export const REQUIRED_SECTIONS = [
6
+ '## What Changed',
7
+ '## What to Tell Your User',
8
+ '## Summary of New Capabilities',
9
+ ];
10
+
11
+ export const MIN_LENGTH = 200;
12
+
13
+ // Keywords that indicate the guide is claiming to fix a bug. When any of these
14
+ // appear inside "## What Changed", the Evidence section becomes mandatory.
15
+ // Limited to "What Changed" (not the whole doc) to reduce false positives from
16
+ // marketing language in "What to Tell Your User".
17
+ const FIX_PATTERNS = [
18
+ /\bfix(es|ed|ing)?\b/i,
19
+ /\bbug(fix)?\b/i,
20
+ /\bregression\b/i,
21
+ /\bresolves?\b/i,
22
+ /\bresolved\b/i,
23
+ /\bcrashes?\b/i,
24
+ /\bcrashed\b/i,
25
+ /\bcrashing\b/i,
26
+ /\bbroken\b/i,
27
+ /\bstall(s|ed|ing)?\b/i,
28
+ ];
29
+
30
+ export const NEXT_TEMPLATE = `# Upgrade Guide — vNEXT
31
+
32
+ <!-- bump: patch -->
33
+ <!-- Valid values: patch, minor, major -->
34
+ <!-- patch = bug fixes, refactors, test additions, doc updates -->
35
+ <!-- minor = new features, new APIs, new capabilities (backwards-compatible) -->
36
+ <!-- major = breaking changes to existing APIs or behavior -->
37
+
38
+ ## What Changed
39
+
40
+ <!-- Describe what changed technically. What new features, APIs, behavioral changes? -->
41
+ <!-- Write this for the AGENT — they need to understand the system deeply. -->
42
+
43
+ ## What to Tell Your User
44
+
45
+ <!-- Write talking points the agent should relay to their user. -->
46
+ <!-- This should be warm, conversational, user-facing — not a changelog. -->
47
+ <!-- Focus on what THEY can now do, not internal plumbing. -->
48
+ <!-- -->
49
+ <!-- PROHIBITED in this section (will fail validation): -->
50
+ <!-- camelCase config keys: silentReject, maxRetries, telegramNotify -->
51
+ <!-- Inline code backtick references like silentReject: false -->
52
+ <!-- Fenced code blocks -->
53
+ <!-- Instructions to edit files or run commands -->
54
+ <!-- -->
55
+ <!-- CORRECT style: "I can turn that on for you" not "set X to false" -->
56
+ <!-- The agent relays this to their user — keep it human. -->
57
+
58
+ - **[Feature name]**: "[Brief, friendly description of what this means for the user]"
59
+
60
+ ## Summary of New Capabilities
61
+
62
+ | Capability | How to Use |
63
+ |-----------|-----------|
64
+ | [Capability] | [Endpoint, command, or "automatic"] |
65
+
66
+ ## Evidence
67
+
68
+ <!-- REQUIRED if this release claims to fix a bug. -->
69
+ <!-- Unit tests passing is NOT evidence. Provide ONE of: -->
70
+ <!-- (a) Reproduction steps + observed before/after on a live system. -->
71
+ <!-- Include log excerpts, observed command output, or behavior -->
72
+ <!-- description. Make it specific enough that a future reader can -->
73
+ <!-- re-run it and see the same thing. -->
74
+ <!-- (b) "Not reproducible in dev — [concrete reason]" if the failure -->
75
+ <!-- mode truly can't be exercised locally (race conditions, -->
76
+ <!-- event-driven paths requiring external signals, etc). -->
77
+ <!-- -->
78
+ <!-- If this release doesn't claim a bug fix (pure feature / refactor), -->
79
+ <!-- leave this section blank or delete it — it's only enforced when -->
80
+ <!-- "What Changed" describes a fix. -->
81
+
82
+ [Describe reproduction + verified fix, OR "Not reproducible in dev — [concrete reason]"]
83
+ `;
84
+
85
+ /**
86
+ * Extract the content of a markdown H2 section by title. Returns the section
87
+ * body (between `## Title` and the next `## ` or end of file), or null if the
88
+ * section isn't present.
89
+ */
90
+ export function extractSection(content, title) {
91
+ const pattern = new RegExp(`## ${title.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}([\\s\\S]*?)(?:\\n## |$)`);
92
+ const m = content.match(pattern);
93
+ return m ? m[1] : null;
94
+ }
95
+
96
+ /**
97
+ * Does the guide claim to fix a bug? Scans "## What Changed" for fix-indicating
98
+ * keywords. Returns true when any pattern matches.
99
+ */
100
+ export function claimsFix(content) {
101
+ const section = extractSection(content, 'What Changed');
102
+ if (!section) return false;
103
+ return FIX_PATTERNS.some(p => p.test(section));
104
+ }
105
+
106
+ /**
107
+ * Validate the Evidence section when a fix is claimed. Returns an array of
108
+ * issue strings (empty when valid).
109
+ */
110
+ export function evidenceIssues(content) {
111
+ const issues = [];
112
+ const section = extractSection(content, 'Evidence');
113
+ if (section === null) {
114
+ issues.push(
115
+ '"What Changed" claims a bug fix, but the guide has no "## Evidence" section. ' +
116
+ 'Add one with reproduction + observed before/after, or "Not reproducible in dev — [reason]". ' +
117
+ 'Unit tests passing is not evidence.'
118
+ );
119
+ return issues;
120
+ }
121
+ // Strip HTML comments and trim
122
+ const stripped = section.replace(/<!--[\s\S]*?-->/g, '').trim();
123
+ if (!stripped) {
124
+ issues.push(
125
+ '"## Evidence" section is empty (only template comments). ' +
126
+ 'Fill it in with reproduction + verified fix, or "Not reproducible in dev — [reason]".'
127
+ );
128
+ return issues;
129
+ }
130
+ // Reject obvious placeholder text
131
+ if (
132
+ /\[Describe reproduction/i.test(stripped) ||
133
+ /\[evidence goes here\]/i.test(stripped) ||
134
+ /TODO\b/.test(stripped) ||
135
+ /FIXME\b/.test(stripped)
136
+ ) {
137
+ issues.push(
138
+ '"## Evidence" section still contains placeholder text. ' +
139
+ 'Replace it with a real reproduction + verification, or explicit "Not reproducible in dev — [reason]".'
140
+ );
141
+ return issues;
142
+ }
143
+ // Require at least 80 chars of real content — any less and it can't describe
144
+ // a reproduction meaningfully.
145
+ if (stripped.length < 80) {
146
+ issues.push(
147
+ `"## Evidence" section is too short (${stripped.length} chars). ` +
148
+ 'Include concrete reproduction + observed before/after, or "Not reproducible in dev" with a concrete reason.'
149
+ );
150
+ }
151
+ return issues;
152
+ }
153
+
154
+ /**
155
+ * Full structural validation of a guide's content. Returns issue strings.
156
+ */
157
+ export function validateGuideContent(content) {
158
+ const issues = [];
159
+
160
+ for (const section of REQUIRED_SECTIONS) {
161
+ if (!content.includes(section)) {
162
+ issues.push(`missing "${section}" section`);
163
+ }
164
+ }
165
+
166
+ if (content.length < MIN_LENGTH) {
167
+ issues.push(`guide is too short (${content.length} chars, minimum ${MIN_LENGTH}) — probably incomplete`);
168
+ }
169
+
170
+ // Template placeholders that were never filled in
171
+ if (content.includes('<!-- Describe what changed')) {
172
+ issues.push('"What Changed" section still contains template placeholder — fill it in');
173
+ }
174
+ if (content.includes('[Feature name]') || content.includes('[Brief, friendly description')) {
175
+ issues.push('"What to Tell Your User" section still contains template placeholder — fill it in');
176
+ }
177
+ if (content.includes('[Capability]') && content.includes('[Endpoint, command')) {
178
+ issues.push('"Summary of New Capabilities" section still contains template placeholder — fill it in');
179
+ }
180
+
181
+ // "What to Tell Your User" technical-leakage checks
182
+ const userSection = extractSection(content, 'What to Tell Your User');
183
+ if (userSection) {
184
+ const camelCaseConfigKey = /\b[a-z]+[A-Z][a-zA-Z]+\s*(?::|=)/.test(userSection);
185
+ if (camelCaseConfigKey) {
186
+ issues.push(
187
+ '"What to Tell Your User" contains a camelCase config key reference (e.g. "silentReject: false"). ' +
188
+ 'Users should never be told to edit config directly. ' +
189
+ 'Rephrase conversationally: "I can turn that on for you" not "set silentReject: false".'
190
+ );
191
+ }
192
+ if (/`[^`]+`/.test(userSection)) {
193
+ issues.push(
194
+ '"What to Tell Your User" contains inline code (`...`). ' +
195
+ 'Remove code formatting — user-facing language should be plain and conversational.'
196
+ );
197
+ }
198
+ if (/```/.test(userSection)) {
199
+ issues.push(
200
+ '"What to Tell Your User" contains a fenced code block. ' +
201
+ 'This section is for user-facing narrative — move technical examples to "What Changed".'
202
+ );
203
+ }
204
+ }
205
+
206
+ // Evidence bar — when the guide claims a fix, require an Evidence section.
207
+ if (claimsFix(content)) {
208
+ issues.push(...evidenceIssues(content));
209
+ }
210
+
211
+ return issues;
212
+ }
213
+
214
+ /**
215
+ * Parse the declared bump type from a guide's <!-- bump: TYPE --> comment.
216
+ * Returns 'patch' | 'minor' | 'major' | null.
217
+ */
218
+ export function parseBumpType(content) {
219
+ const match = /<!--\s*bump:\s*(patch|minor|major)\s*-->/.exec(content);
220
+ return match ? match[1] : null;
221
+ }