@skillfm/local 2.7.10 → 2.7.11

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 (219) hide show
  1. package/README.md +2 -2
  2. package/dist/_vendored-contracts/beacon-assets-v1.d.ts +160 -0
  3. package/dist/_vendored-contracts/beacon-assets-v1.d.ts.map +1 -0
  4. package/dist/_vendored-contracts/beacon-assets-v1.js +29 -0
  5. package/dist/_vendored-contracts/beacon-assets-v1.js.map +1 -0
  6. package/dist/_vendored-contracts/beacon-mcp-tools-v1.d.ts +373 -0
  7. package/dist/_vendored-contracts/beacon-mcp-tools-v1.d.ts.map +1 -0
  8. package/dist/_vendored-contracts/beacon-mcp-tools-v1.js +131 -0
  9. package/dist/_vendored-contracts/beacon-mcp-tools-v1.js.map +1 -0
  10. package/dist/_vendored-contracts/beacon-preferences-v1.d.ts +68 -0
  11. package/dist/_vendored-contracts/beacon-preferences-v1.d.ts.map +1 -0
  12. package/dist/_vendored-contracts/beacon-preferences-v1.js +26 -0
  13. package/dist/_vendored-contracts/beacon-preferences-v1.js.map +1 -0
  14. package/dist/_vendored-contracts/beacon-rule-protocol-v1.d.ts +208 -0
  15. package/dist/_vendored-contracts/beacon-rule-protocol-v1.d.ts.map +1 -0
  16. package/dist/_vendored-contracts/beacon-rule-protocol-v1.js +25 -0
  17. package/dist/_vendored-contracts/beacon-rule-protocol-v1.js.map +1 -0
  18. package/dist/_vendored-contracts/beacon-usage-v1.d.ts +88 -0
  19. package/dist/_vendored-contracts/beacon-usage-v1.d.ts.map +1 -0
  20. package/dist/_vendored-contracts/beacon-usage-v1.js +27 -0
  21. package/dist/_vendored-contracts/beacon-usage-v1.js.map +1 -0
  22. package/dist/_vendored-contracts/index.d.ts +29 -0
  23. package/dist/_vendored-contracts/index.d.ts.map +1 -1
  24. package/dist/_vendored-contracts/index.js.map +1 -1
  25. package/dist/_vendored-contracts/safe-skill-observation-v1.d.ts +149 -0
  26. package/dist/_vendored-contracts/safe-skill-observation-v1.d.ts.map +1 -0
  27. package/dist/_vendored-contracts/safe-skill-observation-v1.js +23 -0
  28. package/dist/_vendored-contracts/safe-skill-observation-v1.js.map +1 -0
  29. package/dist/_vendored-contracts/skill-distribution.d.ts +16 -0
  30. package/dist/_vendored-contracts/skill-distribution.d.ts.map +1 -1
  31. package/dist/_vendored-contracts/skill-distribution.js.map +1 -1
  32. package/dist/{safe → agent-forcing}/claude-code-skill-v2.d.ts +7 -4
  33. package/dist/agent-forcing/claude-code-skill-v2.d.ts.map +1 -0
  34. package/dist/{safe → agent-forcing}/claude-code-skill-v2.js +21 -19
  35. package/dist/agent-forcing/claude-code-skill-v2.js.map +1 -0
  36. package/dist/{safe/safe-rules.d.ts → agent-forcing/forcing-rules.d.ts} +6 -15
  37. package/dist/agent-forcing/forcing-rules.d.ts.map +1 -0
  38. package/dist/agent-forcing/forcing-rules.js +203 -0
  39. package/dist/agent-forcing/forcing-rules.js.map +1 -0
  40. package/dist/agent-forcing/index.d.ts +5 -0
  41. package/dist/agent-forcing/index.d.ts.map +1 -0
  42. package/dist/agent-forcing/index.js +6 -0
  43. package/dist/agent-forcing/index.js.map +1 -0
  44. package/dist/{safe → agent-forcing}/injectors.d.ts +7 -7
  45. package/dist/agent-forcing/injectors.d.ts.map +1 -0
  46. package/dist/{safe → agent-forcing}/injectors.js +24 -21
  47. package/dist/agent-forcing/injectors.js.map +1 -0
  48. package/dist/agent-forcing/slash-commands.d.ts +49 -0
  49. package/dist/agent-forcing/slash-commands.d.ts.map +1 -0
  50. package/dist/agent-forcing/slash-commands.js +166 -0
  51. package/dist/agent-forcing/slash-commands.js.map +1 -0
  52. package/dist/{safe → agent-forcing}/types.d.ts +1 -1
  53. package/dist/agent-forcing/types.d.ts.map +1 -0
  54. package/dist/{safe → agent-forcing}/types.js +4 -4
  55. package/dist/agent-forcing/types.js.map +1 -0
  56. package/dist/agent-hints.d.ts +1 -1
  57. package/dist/agent-hints.d.ts.map +1 -1
  58. package/dist/agent-hints.js +35 -41
  59. package/dist/agent-hints.js.map +1 -1
  60. package/dist/beacon/apprentice-capabilities.d.ts +10 -0
  61. package/dist/beacon/apprentice-capabilities.d.ts.map +1 -0
  62. package/dist/beacon/apprentice-capabilities.js +34 -0
  63. package/dist/beacon/apprentice-capabilities.js.map +1 -0
  64. package/dist/checkup/dimension-1-usage.d.ts +8 -1
  65. package/dist/checkup/dimension-1-usage.d.ts.map +1 -1
  66. package/dist/checkup/dimension-1-usage.js +3 -2
  67. package/dist/checkup/dimension-1-usage.js.map +1 -1
  68. package/dist/checkup/dimension-2-context.d.ts +12 -0
  69. package/dist/checkup/dimension-2-context.d.ts.map +1 -0
  70. package/dist/checkup/dimension-2-context.js +56 -0
  71. package/dist/checkup/dimension-2-context.js.map +1 -0
  72. package/dist/checkup/dimension-5-behavior.d.ts +12 -0
  73. package/dist/checkup/dimension-5-behavior.d.ts.map +1 -0
  74. package/dist/checkup/dimension-5-behavior.js +40 -0
  75. package/dist/checkup/dimension-5-behavior.js.map +1 -0
  76. package/dist/checkup/dimension-6-injection.d.ts +41 -0
  77. package/dist/checkup/dimension-6-injection.d.ts.map +1 -0
  78. package/dist/checkup/dimension-6-injection.js +74 -0
  79. package/dist/checkup/dimension-6-injection.js.map +1 -0
  80. package/dist/checkup/index.d.ts +3 -0
  81. package/dist/checkup/index.d.ts.map +1 -1
  82. package/dist/checkup/index.js +3 -0
  83. package/dist/checkup/index.js.map +1 -1
  84. package/dist/checkup/last-report.d.ts +32 -0
  85. package/dist/checkup/last-report.d.ts.map +1 -0
  86. package/dist/checkup/last-report.js +91 -0
  87. package/dist/checkup/last-report.js.map +1 -0
  88. package/dist/checkup/report.d.ts +13 -1
  89. package/dist/checkup/report.d.ts.map +1 -1
  90. package/dist/checkup/report.js +5 -3
  91. package/dist/checkup/report.js.map +1 -1
  92. package/dist/forcing-cli.d.ts +2 -0
  93. package/dist/forcing-cli.d.ts.map +1 -0
  94. package/dist/forcing-cli.js +2 -0
  95. package/dist/forcing-cli.js.map +1 -0
  96. package/dist/guard/bin.js +0 -0
  97. package/dist/guard/cli.js +2 -2
  98. package/dist/guard/cli.js.map +1 -1
  99. package/dist/guard/prompt-context.d.ts +3 -3
  100. package/dist/guard/prompt-context.d.ts.map +1 -1
  101. package/dist/guard/prompt-context.js +24 -42
  102. package/dist/guard/prompt-context.js.map +1 -1
  103. package/dist/harness/templates.d.ts +1 -1
  104. package/dist/harness/templates.js +1 -1
  105. package/dist/harness/templates.js.map +1 -1
  106. package/dist/index.js +14 -20
  107. package/dist/index.js.map +1 -1
  108. package/dist/mcp/brain-client.d.ts.map +1 -1
  109. package/dist/mcp/brain-client.js +3 -0
  110. package/dist/mcp/brain-client.js.map +1 -1
  111. package/dist/mcp/index.d.ts +1 -0
  112. package/dist/mcp/index.d.ts.map +1 -1
  113. package/dist/mcp/index.js +5 -0
  114. package/dist/mcp/index.js.map +1 -1
  115. package/dist/mcp/tools/_sentry-descriptions.js +2 -2
  116. package/dist/mcp/tools/_sentry-descriptions.js.map +1 -1
  117. package/dist/mcp/tools/checkup.d.ts +17 -2
  118. package/dist/mcp/tools/checkup.d.ts.map +1 -1
  119. package/dist/mcp/tools/checkup.js +41 -3
  120. package/dist/mcp/tools/checkup.js.map +1 -1
  121. package/dist/mcp/tools/index.d.ts +3 -16
  122. package/dist/mcp/tools/index.d.ts.map +1 -1
  123. package/dist/mcp/tools/index.js +40 -228
  124. package/dist/mcp/tools/index.js.map +1 -1
  125. package/dist/mcp/tools/install-module.d.ts +25 -0
  126. package/dist/mcp/tools/install-module.d.ts.map +1 -0
  127. package/dist/mcp/tools/install-module.js +87 -0
  128. package/dist/mcp/tools/install-module.js.map +1 -0
  129. package/dist/mcp/tools/send-daily-report.d.ts +29 -0
  130. package/dist/mcp/tools/send-daily-report.d.ts.map +1 -0
  131. package/dist/mcp/tools/send-daily-report.js +61 -0
  132. package/dist/mcp/tools/send-daily-report.js.map +1 -0
  133. package/dist/mcp/tools/setup-agent-forcing.d.ts +19 -0
  134. package/dist/mcp/tools/setup-agent-forcing.d.ts.map +1 -0
  135. package/dist/mcp/tools/setup-agent-forcing.js +86 -0
  136. package/dist/mcp/tools/setup-agent-forcing.js.map +1 -0
  137. package/dist/mcp/tools/setup-gateway.d.ts +2 -1
  138. package/dist/mcp/tools/setup-gateway.d.ts.map +1 -1
  139. package/dist/mcp/tools/setup-gateway.js +24 -6
  140. package/dist/mcp/tools/setup-gateway.js.map +1 -1
  141. package/dist/mcp/tools/setup-safe.d.ts +1 -18
  142. package/dist/mcp/tools/setup-safe.d.ts.map +1 -1
  143. package/dist/mcp/tools/setup-safe.js +1 -89
  144. package/dist/mcp/tools/setup-safe.js.map +1 -1
  145. package/dist/mcp/tools/unlock.d.ts +2 -2
  146. package/dist/mcp/tools/unlock.d.ts.map +1 -1
  147. package/dist/mcp/tools/unlock.js +40 -27
  148. package/dist/mcp/tools/unlock.js.map +1 -1
  149. package/dist/mcp-stdio/bin.js +0 -0
  150. package/dist/mcp-stdio/server.d.ts.map +1 -1
  151. package/dist/mcp-stdio/server.js +108 -265
  152. package/dist/mcp-stdio/server.js.map +1 -1
  153. package/dist/safe/index.d.ts +4 -4
  154. package/dist/safe/index.d.ts.map +1 -1
  155. package/dist/safe/index.js +7 -4
  156. package/dist/safe/index.js.map +1 -1
  157. package/dist/safe-cli.d.ts +6 -0
  158. package/dist/safe-cli.d.ts.map +1 -1
  159. package/dist/safe-cli.js +13 -5
  160. package/dist/safe-cli.js.map +1 -1
  161. package/dist/safe-observation/collector.d.ts +21 -0
  162. package/dist/safe-observation/collector.d.ts.map +1 -0
  163. package/dist/safe-observation/collector.js +101 -0
  164. package/dist/safe-observation/collector.js.map +1 -0
  165. package/dist/safe-observation/store.d.ts +34 -0
  166. package/dist/safe-observation/store.d.ts.map +1 -0
  167. package/dist/safe-observation/store.js +80 -0
  168. package/dist/safe-observation/store.js.map +1 -0
  169. package/dist/save-token/gateway-setup.d.ts +33 -3
  170. package/dist/save-token/gateway-setup.d.ts.map +1 -1
  171. package/dist/save-token/gateway-setup.js +165 -18
  172. package/dist/save-token/gateway-setup.js.map +1 -1
  173. package/dist/scheduler/brain-push-client.d.ts.map +1 -1
  174. package/dist/scheduler/brain-push-client.js +13 -2
  175. package/dist/scheduler/brain-push-client.js.map +1 -1
  176. package/dist/scheduler/types.d.ts +5 -0
  177. package/dist/scheduler/types.d.ts.map +1 -1
  178. package/dist/scheduler/types.js +3 -1
  179. package/dist/scheduler/types.js.map +1 -1
  180. package/dist/setup-safe.d.ts +20 -0
  181. package/dist/setup-safe.d.ts.map +1 -0
  182. package/dist/setup-safe.js +93 -0
  183. package/dist/setup-safe.js.map +1 -0
  184. package/dist/skill-installer/index.d.ts +9 -0
  185. package/dist/skill-installer/index.d.ts.map +1 -1
  186. package/dist/skill-installer/index.js +20 -1
  187. package/dist/skill-installer/index.js.map +1 -1
  188. package/dist/skill-md/template.d.ts +18 -4
  189. package/dist/skill-md/template.d.ts.map +1 -1
  190. package/dist/skill-md/template.js +253 -59
  191. package/dist/skill-md/template.js.map +1 -1
  192. package/dist/skill-runner/discovery.d.ts.map +1 -1
  193. package/dist/skill-runner/discovery.js +8 -5
  194. package/dist/skill-runner/discovery.js.map +1 -1
  195. package/dist/skill-tunnel/cli.d.ts.map +1 -1
  196. package/dist/skill-tunnel/cli.js +22 -0
  197. package/dist/skill-tunnel/cli.js.map +1 -1
  198. package/dist/skill-tunnel/client.d.ts +5 -0
  199. package/dist/skill-tunnel/client.d.ts.map +1 -1
  200. package/dist/skill-tunnel/client.js +2 -0
  201. package/dist/skill-tunnel/client.js.map +1 -1
  202. package/dist/skill-tunnel/local-bridge.d.ts +9 -0
  203. package/dist/skill-tunnel/local-bridge.d.ts.map +1 -1
  204. package/dist/skill-tunnel/local-bridge.js +24 -1
  205. package/dist/skill-tunnel/local-bridge.js.map +1 -1
  206. package/package.json +3 -3
  207. package/dist/beacon-cleanup/audit.d.ts +0 -24
  208. package/dist/beacon-cleanup/audit.d.ts.map +0 -1
  209. package/dist/beacon-cleanup/audit.js +0 -292
  210. package/dist/beacon-cleanup/audit.js.map +0 -1
  211. package/dist/safe/claude-code-skill-v2.d.ts.map +0 -1
  212. package/dist/safe/claude-code-skill-v2.js.map +0 -1
  213. package/dist/safe/injectors.d.ts.map +0 -1
  214. package/dist/safe/injectors.js.map +0 -1
  215. package/dist/safe/safe-rules.d.ts.map +0 -1
  216. package/dist/safe/safe-rules.js +0 -152
  217. package/dist/safe/safe-rules.js.map +0 -1
  218. package/dist/safe/types.d.ts.map +0 -1
  219. package/dist/safe/types.js.map +0 -1
@@ -0,0 +1,40 @@
1
+ // sdk/skillfm-local/src/checkup/dimension-5-behavior.ts
2
+ //
3
+ // 维度 5 behavior reset helper — 为 forcing reset / stale skill batch update 提供候选集。
4
+ import * as fs from 'node:fs';
5
+ import * as path from 'node:path';
6
+ import { homedir } from 'node:os';
7
+ const DEFAULT_BEHAVIOR_ROOTS = [
8
+ path.join(homedir(), '.skillfm', 'forcing-state.json'),
9
+ path.join(homedir(), '.skillfm', 'forcing-cache.json'),
10
+ ];
11
+ async function collectBehaviorCandidates(roots) {
12
+ const out = [];
13
+ for (const root of roots) {
14
+ if (!fs.existsSync(root))
15
+ continue;
16
+ try {
17
+ const stat = await fs.promises.stat(root);
18
+ out.push({
19
+ path: root,
20
+ bytes: stat.isFile() ? stat.size : 0,
21
+ label: 'forcing-reset',
22
+ });
23
+ }
24
+ catch {
25
+ // ignore
26
+ }
27
+ }
28
+ return out;
29
+ }
30
+ export async function buildBehaviorResetPlan(roots = DEFAULT_BEHAVIOR_ROOTS) {
31
+ const candidates = await collectBehaviorCandidates(roots);
32
+ const bytes_freed = candidates.reduce((sum, item) => sum + item.bytes, 0);
33
+ return {
34
+ roots,
35
+ candidates,
36
+ bytes_freed,
37
+ items_count: candidates.length,
38
+ };
39
+ }
40
+ //# sourceMappingURL=dimension-5-behavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension-5-behavior.js","sourceRoot":"","sources":["../../src/checkup/dimension-5-behavior.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iFAAiF;AAEjF,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQlC,MAAM,sBAAsB,GAAG;IAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,oBAAoB,CAAC;IACtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,oBAAoB,CAAC;CACvD,CAAC;AAEF,KAAK,UAAU,yBAAyB,CAAC,KAAe;IACtD,MAAM,GAAG,GAA6B,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpC,KAAK,EAAE,eAAe;aACvB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAkB,sBAAsB;IAMnF,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1E,OAAO;QACL,KAAK;QACL,UAAU;QACV,WAAW;QACX,WAAW,EAAE,UAAU,CAAC,MAAM;KAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,41 @@
1
+ export type InjectionSignalType = 'token_spike' | 'skill_behavior' | 'tool_description';
2
+ export type InjectionSeverity = 'warning' | 'critical';
3
+ export interface InjectionSignal {
4
+ signal_type: InjectionSignalType;
5
+ severity: InjectionSeverity;
6
+ confidence: number;
7
+ summary: string;
8
+ recommendation: string;
9
+ matches: string[];
10
+ }
11
+ export declare const TOOL_DESC_BLACKLIST: readonly [{
12
+ readonly label: "ignore previous instructions";
13
+ readonly pattern: RegExp;
14
+ readonly weight: 0.35;
15
+ }, {
16
+ readonly label: "system override";
17
+ readonly pattern: RegExp;
18
+ readonly weight: 0.32;
19
+ }, {
20
+ readonly label: "reveal system prompt";
21
+ readonly pattern: RegExp;
22
+ readonly weight: 0.33;
23
+ }, {
24
+ readonly label: "prompt injection";
25
+ readonly pattern: RegExp;
26
+ readonly weight: 0.22;
27
+ }, {
28
+ readonly label: "bypass policy";
29
+ readonly pattern: RegExp;
30
+ readonly weight: 0.28;
31
+ }, {
32
+ readonly label: "developer message leak";
33
+ readonly pattern: RegExp;
34
+ readonly weight: 0.26;
35
+ }];
36
+ export declare function detectTokenSpike(baseline: number, current: number, threshold?: number): InjectionSignal | null;
37
+ export declare function detectSkillBehaviorShift(baseline: number, current: number, threshold?: number): InjectionSignal | null;
38
+ export declare function detectToolDescriptionInjection(description: string): InjectionSignal | null;
39
+ export declare function pickInjectionSignal(signals: Array<InjectionSignal | null>): InjectionSignal | null;
40
+ export declare function renderInjectionDefenseLine(signal: InjectionSignal | null): string;
41
+ //# sourceMappingURL=dimension-6-injection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension-6-injection.d.ts","sourceRoot":"","sources":["../../src/checkup/dimension-6-injection.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AACxF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;EAOtB,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,eAAe,GAAG,IAAI,CAY3G;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,eAAe,GAAG,IAAI,CAYjH;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAe1F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,eAAe,GAAG,IAAI,CAOlG;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,MAAM,CAGjF"}
@@ -0,0 +1,74 @@
1
+ // sdk/skillfm-local/src/checkup/dimension-6-injection.ts
2
+ //
3
+ // 维度 6F: token spike / skill behavior / tool description injection defense.
4
+ export const TOOL_DESC_BLACKLIST = [
5
+ { label: 'ignore previous instructions', pattern: /ignore\s+previous\s+instructions?/i, weight: 0.35 },
6
+ { label: 'system override', pattern: /system\s+override/i, weight: 0.32 },
7
+ { label: 'reveal system prompt', pattern: /reveal\s+.*system\s+prompt/i, weight: 0.33 },
8
+ { label: 'prompt injection', pattern: /prompt\s+injection/i, weight: 0.22 },
9
+ { label: 'bypass policy', pattern: /bypass\s+policy/i, weight: 0.28 },
10
+ { label: 'developer message leak', pattern: /developer\s+message/i, weight: 0.26 },
11
+ ];
12
+ export function detectTokenSpike(baseline, current, threshold = 0.5) {
13
+ if (baseline <= 0)
14
+ return null;
15
+ const spike = (current - baseline) / baseline;
16
+ if (spike < threshold)
17
+ return null;
18
+ return {
19
+ signal_type: 'token_spike',
20
+ severity: spike >= 1 ? 'critical' : 'warning',
21
+ confidence: Math.min(0.99, Math.round((0.65 + spike / 2) * 100) / 100),
22
+ summary: `token spike ${Math.round(spike * 100)}% (${baseline} → ${current})`,
23
+ recommendation: '暂停可疑 prompt source, 优先做 24h rollback',
24
+ matches: [`spike=${Math.round(spike * 100)}%`],
25
+ };
26
+ }
27
+ export function detectSkillBehaviorShift(baseline, current, threshold = 5) {
28
+ if (baseline <= 0)
29
+ return null;
30
+ const ratio = current / baseline;
31
+ if (ratio < threshold)
32
+ return null;
33
+ return {
34
+ signal_type: 'skill_behavior',
35
+ severity: ratio >= threshold * 2 ? 'critical' : 'warning',
36
+ confidence: Math.min(0.99, Math.round((0.55 + ratio / (threshold * 4)) * 100) / 100),
37
+ summary: `skill behavior ${ratio.toFixed(1)}x baseline (${baseline} → ${current})`,
38
+ recommendation: '暂停 outlier skill 并检查最近 invocation history',
39
+ matches: [`ratio=${ratio.toFixed(1)}x`],
40
+ };
41
+ }
42
+ export function detectToolDescriptionInjection(description) {
43
+ const matches = TOOL_DESC_BLACKLIST.filter((entry) => entry.pattern.test(description)).map((entry) => entry.label);
44
+ if (matches.length === 0)
45
+ return null;
46
+ const score = Math.min(1, matches.reduce((sum, match) => {
47
+ const entry = TOOL_DESC_BLACKLIST.find((item) => item.label === match);
48
+ return sum + (entry?.weight ?? 0);
49
+ }, 0));
50
+ return {
51
+ signal_type: 'tool_description',
52
+ severity: matches.length > 1 ? 'critical' : 'warning',
53
+ confidence: Math.round((0.6 + score) * 100) / 100,
54
+ summary: `${matches.length} tool description match${matches.length > 1 ? 'es' : ''}`,
55
+ recommendation: 'Quarantine the tool and review the prompt surface',
56
+ matches,
57
+ };
58
+ }
59
+ export function pickInjectionSignal(signals) {
60
+ const cleaned = signals.filter((signal) => Boolean(signal));
61
+ if (cleaned.length === 0)
62
+ return null;
63
+ return cleaned.sort((a, b) => {
64
+ if (a.severity !== b.severity)
65
+ return a.severity === 'critical' ? -1 : 1;
66
+ return b.confidence - a.confidence;
67
+ })[0] ?? null;
68
+ }
69
+ export function renderInjectionDefenseLine(signal) {
70
+ if (!signal)
71
+ return '6F 守: ✅ 暂无异常';
72
+ return `6F 守: ${signal.severity === 'critical' ? '🔴' : '🟠'} ${signal.summary} → ${signal.recommendation}`;
73
+ }
74
+ //# sourceMappingURL=dimension-6-injection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension-6-injection.js","sourceRoot":"","sources":["../../src/checkup/dimension-6-injection.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,9 @@ export { checkDimensionUsage, buildUsageSurfaceLines } from './dimension-1-usage
6
6
  export type { UsageDimDeps } from './dimension-1-usage.js';
7
7
  export { checkDimensionFiles, executeFileCleanup } from './dimension-3-files.js';
8
8
  export { checkDimensionContext } from './dimension-4-context.js';
9
+ export { buildContextCleanupPlan } from './dimension-2-context.js';
10
+ export { buildBehaviorResetPlan } from './dimension-5-behavior.js';
11
+ export { detectTokenSpike, detectSkillBehaviorShift, detectToolDescriptionInjection, pickInjectionSignal, renderInjectionDefenseLine, } from './dimension-6-injection.js';
9
12
  export { renderDailyPush, renderAnomalyPush, shouldPushRealtimeAnomaly, pushTimeToCron, DEFAULT_PUSH_CONFIG, } from './daily-push.js';
10
13
  export type { DailyPushConfig, PushTime } from './daily-push.js';
11
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checkup/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,WAAW,EACX,QAAQ,EACR,OAAO,EACP,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checkup/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,WAAW,EACX,QAAQ,EACR,OAAO,EACP,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,8BAA8B,EAC9B,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
@@ -6,5 +6,8 @@ export { computeHealthScore, selectTopFocus, computeTrend, loadHealthHistory, ap
6
6
  export { checkDimensionUsage, buildUsageSurfaceLines } from './dimension-1-usage.js';
7
7
  export { checkDimensionFiles, executeFileCleanup } from './dimension-3-files.js';
8
8
  export { checkDimensionContext } from './dimension-4-context.js';
9
+ export { buildContextCleanupPlan } from './dimension-2-context.js';
10
+ export { buildBehaviorResetPlan } from './dimension-5-behavior.js';
11
+ export { detectTokenSpike, detectSkillBehaviorShift, detectToolDescriptionInjection, pickInjectionSignal, renderInjectionDefenseLine, } from './dimension-6-injection.js';
9
12
  export { renderDailyPush, renderAnomalyPush, shouldPushRealtimeAnomaly, pushTimeToCron, DEFAULT_PUSH_CONFIG, } from './daily-push.js';
10
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checkup/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,sBAAsB;AAUtB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checkup/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,sBAAsB;AAUtB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,8BAA8B,EAC9B,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,32 @@
1
+ export interface LastReportRecord {
2
+ /** ISO timestamp of the most recent report (manual /skillfm OR daily cron). */
3
+ last_report_at: string;
4
+ /** What triggered the last report — useful for telemetry / debugging. */
5
+ trigger: 'manual_slash_command' | 'daily_cron' | 'unknown';
6
+ /** Schema version, for future migrations. */
7
+ schema_version: 1;
8
+ }
9
+ export declare function lastReportFilePath(): string;
10
+ /**
11
+ * Read the last-report record. Returns null if not present (caller should
12
+ * fall back to a sensible default like 24h ago).
13
+ */
14
+ export declare function readLastReport(): Promise<LastReportRecord | null>;
15
+ /**
16
+ * Write the last-report record. Caller usually does this right after
17
+ * surfacing the report rendered text.
18
+ */
19
+ export declare function writeLastReport(record: Omit<LastReportRecord, 'schema_version'>): Promise<void>;
20
+ /**
21
+ * Resolve the "since" cutoff for the manual scan: prior last_report_at if
22
+ * present, otherwise (now - DEFAULT_FALLBACK_HOURS).
23
+ */
24
+ export declare function resolveSinceCutoff(now?: Date): Promise<Date>;
25
+ /** Compute hours-since-last-report (rounded up to integer for sinceHours arg). */
26
+ export declare function hoursSince(since: Date, now?: Date): number;
27
+ /**
28
+ * Render a short human-readable scan-window line for the report header,
29
+ * e.g. "扫描期间: 2026-05-09 04:30 ~ 2026-05-09 09:15 UTC (4h45m)".
30
+ */
31
+ export declare function renderScanWindowLine(since: Date, now?: Date): string;
32
+ //# sourceMappingURL=last-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"last-report.d.ts","sourceRoot":"","sources":["../../src/checkup/last-report.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,OAAO,EAAE,sBAAsB,GAAG,YAAY,GAAG,SAAS,CAAC;IAC3D,6CAA6C;IAC7C,cAAc,EAAE,CAAC,CAAC;CACnB;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgBvE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrG;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9E;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAKtE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAQhF"}
@@ -0,0 +1,91 @@
1
+ // sdk/skillfm-local/src/checkup/last-report.ts
2
+ //
3
+ // Sidecar-local persistence for "last Beacon report" timestamp. Used by
4
+ // `/skillfm` slash command flow and the `since_last_report` checkup option:
5
+ // the manual scan covers the period since the previous report.
6
+ //
7
+ // Stored as `~/.skillfm/last-report.json`. BYOK-safe: stays on the user's
8
+ // node, never travels to the server.
9
+ import { promises as fs, existsSync } from 'node:fs';
10
+ import path from 'node:path';
11
+ import { homedir } from 'node:os';
12
+ // Resolve paths lazily so test harnesses can rebase $HOME between cases.
13
+ function skillfmDir() {
14
+ return path.join(homedir(), '.skillfm');
15
+ }
16
+ function lastReportFile() {
17
+ return path.join(skillfmDir(), 'last-report.json');
18
+ }
19
+ /** Default fallback window when no prior report exists: 24h ago. */
20
+ const DEFAULT_FALLBACK_HOURS = 24;
21
+ export function lastReportFilePath() {
22
+ return lastReportFile();
23
+ }
24
+ /**
25
+ * Read the last-report record. Returns null if not present (caller should
26
+ * fall back to a sensible default like 24h ago).
27
+ */
28
+ export async function readLastReport() {
29
+ if (!existsSync(lastReportFile()))
30
+ return null;
31
+ try {
32
+ const raw = await fs.readFile(lastReportFile(), 'utf-8');
33
+ const parsed = JSON.parse(raw);
34
+ if (typeof parsed.last_report_at !== 'string' || !parsed.last_report_at) {
35
+ return null;
36
+ }
37
+ return {
38
+ last_report_at: parsed.last_report_at,
39
+ trigger: parsed.trigger ?? 'unknown',
40
+ schema_version: 1,
41
+ };
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ /**
48
+ * Write the last-report record. Caller usually does this right after
49
+ * surfacing the report rendered text.
50
+ */
51
+ export async function writeLastReport(record) {
52
+ if (!existsSync(skillfmDir())) {
53
+ await fs.mkdir(skillfmDir(), { recursive: true, mode: 0o700 });
54
+ }
55
+ const body = { ...record, schema_version: 1 };
56
+ await fs.writeFile(lastReportFile(), JSON.stringify(body, null, 2), { encoding: 'utf-8', mode: 0o600 });
57
+ }
58
+ /**
59
+ * Resolve the "since" cutoff for the manual scan: prior last_report_at if
60
+ * present, otherwise (now - DEFAULT_FALLBACK_HOURS).
61
+ */
62
+ export async function resolveSinceCutoff(now = new Date()) {
63
+ const prior = await readLastReport();
64
+ if (prior) {
65
+ const t = Date.parse(prior.last_report_at);
66
+ if (Number.isFinite(t))
67
+ return new Date(t);
68
+ }
69
+ return new Date(now.getTime() - DEFAULT_FALLBACK_HOURS * 60 * 60 * 1000);
70
+ }
71
+ /** Compute hours-since-last-report (rounded up to integer for sinceHours arg). */
72
+ export function hoursSince(since, now = new Date()) {
73
+ const ms = Math.max(0, now.getTime() - since.getTime());
74
+ const h = ms / (60 * 60 * 1000);
75
+ // Round up so we err on the side of including the entire period.
76
+ return Math.max(1, Math.ceil(h));
77
+ }
78
+ /**
79
+ * Render a short human-readable scan-window line for the report header,
80
+ * e.g. "扫描期间: 2026-05-09 04:30 ~ 2026-05-09 09:15 UTC (4h45m)".
81
+ */
82
+ export function renderScanWindowLine(since, now = new Date()) {
83
+ const fmt = (d) => d.toISOString().replace('T', ' ').replace(/:\d\d\.\d{3}Z$/, ' UTC');
84
+ const ms = Math.max(0, now.getTime() - since.getTime());
85
+ const totalMin = Math.floor(ms / 60000);
86
+ const h = Math.floor(totalMin / 60);
87
+ const m = totalMin % 60;
88
+ const span = h > 0 ? `${h}h${m}m` : `${m}m`;
89
+ return `扫描期间: ${fmt(since)} ~ ${fmt(now)} (${span})`;
90
+ }
91
+ //# sourceMappingURL=last-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"last-report.js","sourceRoot":"","sources":["../../src/checkup/last-report.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
- import type { LocalUsageStore } from '../usage-local/store.js';
1
+ import type { LocalUsageStore, UsageQuery } from '../usage-local/store.js';
2
2
  import type { ReconciliationEngine } from '../reconciliation/index.js';
3
3
  import type { CheckupReport } from './types.js';
4
+ import { checkDimensionFiles } from './dimension-3-files.js';
5
+ import { checkDimensionContext } from './dimension-4-context.js';
4
6
  export interface CheckupDeps {
5
7
  store: LocalUsageStore;
6
8
  reconciliationEngine: ReconciliationEngine;
@@ -8,6 +10,16 @@ export interface CheckupDeps {
8
10
  is_pro: boolean;
9
11
  /** 跳过 history 写入 (测试用) */
10
12
  skip_persist?: boolean;
13
+ /** 测试/调用方可覆盖文件维度实现,避免扫真实 HOME。 */
14
+ checkDimensionFiles?: typeof checkDimensionFiles;
15
+ /** 测试/调用方可覆盖上下文维度实现,避免扫真实 HOME。 */
16
+ checkDimensionContext?: typeof checkDimensionContext;
17
+ /**
18
+ * Override the usage-aggregation window for dimension 1. Used by the
19
+ * `/skillfm` flow (since_last_report) to make the manual scan reflect the
20
+ * period since the previous report. Default: `timeWindow('today')`.
21
+ */
22
+ usageWindow?: UsageQuery;
11
23
  }
12
24
  /**
13
25
  * 主入口 — 跑一次全 5 维度体检 → CheckupReport
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/checkup/report.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAWjE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAgE1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA0D7D"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/checkup/report.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAQjE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kCAAkC;IAClC,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACjD,mCAAmC;IACnC,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD;;;;OAIG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAkE1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA0D7D"}
@@ -11,16 +11,18 @@ import { computeHealthScore, selectTopFocus, computeTrend, appendHealthSnapshot,
11
11
  */
12
12
  export async function runCheckup(deps) {
13
13
  const generated_at = new Date().toISOString();
14
- // 维度 1: 用量 (含 reconciliation)
14
+ // 维度 1: 用量 (含 reconciliation). Pass through usageWindow when caller
15
+ // wants the manual /skillfm time-window (since_last_report) to apply.
15
16
  const reconciliations = await deps.reconciliationEngine.reconcileAll();
16
17
  const usage = checkDimensionUsage({
17
18
  store: deps.store,
18
19
  reconciliations,
20
+ usageWindow: deps.usageWindow,
19
21
  });
20
22
  // 维度 3: 文件 (并行扫)
21
- const files = await checkDimensionFiles();
23
+ const files = await (deps.checkDimensionFiles ?? checkDimensionFiles)();
22
24
  // 维度 4: 上下文
23
- const context = await checkDimensionContext();
25
+ const context = await (deps.checkDimensionContext ?? checkDimensionContext)();
24
26
  // 维度 2: 技术债 (Pro 锁, MVP 不做)
25
27
  const tech_debt = {
26
28
  dimension: 'tech_debt',
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/checkup/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/checkup/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { cmdSafe as cmdForcing } from './safe-cli.js';
2
+ //# sourceMappingURL=forcing-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forcing-cli.d.ts","sourceRoot":"","sources":["../src/forcing-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { cmdSafe as cmdForcing } from './safe-cli.js';
2
+ //# sourceMappingURL=forcing-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forcing-cli.js","sourceRoot":"","sources":["../src/forcing-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC"}
package/dist/guard/bin.js CHANGED
File without changes
package/dist/guard/cli.js CHANGED
@@ -208,7 +208,7 @@ async function cmdProbeMcp(_stdin, _flags) {
208
208
  }
209
209
  }
210
210
  // ============================================================================
211
- // 子命令:prompt-context (V2 SAFE — UserPromptSubmit hint, PRD §2.4)
211
+ // 子命令:prompt-context (V2 Agent Forcing — UserPromptSubmit hint, PRD §2.4)
212
212
  // ============================================================================
213
213
  async function cmdPromptContext(stdin, _flags) {
214
214
  // Stay completely silent on errors — stdout is consumed by Claude Code as
@@ -257,7 +257,7 @@ export async function runGuardCli(argv) {
257
257
  ' session-start Hook: harness session start (warn-only)',
258
258
  ' pre-tool-use Hook: pre-tool-use (blocking — exit 2 if brain_run not called)',
259
259
  ' post-tool-use Hook: post-tool-use (warn-only, audit)',
260
- ' prompt-context Hook: UserPromptSubmit (V2 SAFE — emit L4 hint to stdout when SkillFM trigger keyword detected)',
260
+ ' prompt-context Hook: UserPromptSubmit (V2 Agent Forcing — emit L4 hint to stdout when SkillFM trigger keyword detected)',
261
261
  ' check-script-loaded Diagnostic: print current guard state as JSON',
262
262
  ' probe-mcp Diagnostic: probe sidecar MCP output layer (M9.5)',
263
263
  '',
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/guard/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/guard/cli.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * sdk/skillfm-local/src/guard/prompt-context.ts
3
3
  *
4
- * V2 SAFE — UserPromptSubmit hint emitter (PRD §2.4).
4
+ * V2 Agent Forcing — UserPromptSubmit hint emitter (PRD §2.4).
5
5
  *
6
6
  * Called via `skillfm-guard prompt-context` from Claude Code's
7
7
  * UserPromptSubmit hook. Reads stdin JSON, scans the user prompt for
@@ -15,11 +15,11 @@
15
15
  */
16
16
  export interface MatchedIntent {
17
17
  /** Which SkillFM tool the agent should reach for first. */
18
- primary_tool: 'skillfm_beacon' | 'skillfm_byok';
18
+ primary_tool: 'skillfm_checkup' | 'skillfm_show_my_usage' | 'skillfm_show_save_recommendations' | 'skillfm_show_apprentice_skill' | 'skillfm_diagnose_slow';
19
19
  /** The keyword phrase that matched (for explanation in the hint). */
20
20
  matched_phrase: string;
21
21
  /** Rough categorization for analytics; not surfaced in hint. */
22
- category: 'health' | 'usage' | 'cleanup' | 'byok' | 'install';
22
+ category: 'health' | 'usage' | 'savings' | 'side_hustle' | 'performance';
23
23
  }
24
24
  /**
25
25
  * Scan a user prompt for the highest-priority SkillFM trigger.
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-context.d.ts","sourceRoot":"","sources":["../../src/guard/prompt-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,YAAY,EACR,gBAAgB,GAChB,cAAc,CAAC;IACnB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;CAC/D;AAyCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAajE;AAsBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAQxD;AAMD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAQ1E"}
1
+ {"version":3,"file":"prompt-context.d.ts","sourceRoot":"","sources":["../../src/guard/prompt-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,YAAY,EACR,iBAAiB,GACjB,uBAAuB,GACvB,mCAAmC,GACnC,+BAA+B,GAC/B,uBAAuB,CAAC;IAC5B,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;CAC1E;AA+BD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAajE;AAmBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAQxD;AAMD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAQ1E"}