pi-continuous-learning 0.6.0 → 0.8.0

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 (93) hide show
  1. package/README.md +78 -0
  2. package/dist/agents-md.d.ts +23 -2
  3. package/dist/agents-md.d.ts.map +1 -1
  4. package/dist/agents-md.js +58 -3
  5. package/dist/agents-md.js.map +1 -1
  6. package/dist/analysis-event-log.d.ts +50 -0
  7. package/dist/analysis-event-log.d.ts.map +1 -0
  8. package/dist/analysis-event-log.js +120 -0
  9. package/dist/analysis-event-log.js.map +1 -0
  10. package/dist/analysis-notification.d.ts +20 -0
  11. package/dist/analysis-notification.d.ts.map +1 -0
  12. package/dist/analysis-notification.js +63 -0
  13. package/dist/analysis-notification.js.map +1 -0
  14. package/dist/cli/analyze-single-shot.d.ts +20 -2
  15. package/dist/cli/analyze-single-shot.d.ts.map +1 -1
  16. package/dist/cli/analyze-single-shot.js +109 -5
  17. package/dist/cli/analyze-single-shot.js.map +1 -1
  18. package/dist/cli/analyze.js +132 -16
  19. package/dist/cli/analyze.js.map +1 -1
  20. package/dist/command-scaffold.d.ts +25 -0
  21. package/dist/command-scaffold.d.ts.map +1 -0
  22. package/dist/command-scaffold.js +77 -0
  23. package/dist/command-scaffold.js.map +1 -0
  24. package/dist/confidence.d.ts +12 -1
  25. package/dist/confidence.d.ts.map +1 -1
  26. package/dist/confidence.js +37 -9
  27. package/dist/confidence.js.map +1 -1
  28. package/dist/config.d.ts +16 -0
  29. package/dist/config.d.ts.map +1 -1
  30. package/dist/config.js +31 -0
  31. package/dist/config.js.map +1 -1
  32. package/dist/graduation.d.ts +63 -0
  33. package/dist/graduation.d.ts.map +1 -0
  34. package/dist/graduation.js +155 -0
  35. package/dist/graduation.js.map +1 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +7 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/instinct-cleanup.d.ts +57 -0
  40. package/dist/instinct-cleanup.d.ts.map +1 -0
  41. package/dist/instinct-cleanup.js +150 -0
  42. package/dist/instinct-cleanup.js.map +1 -0
  43. package/dist/instinct-graduate.d.ts +43 -0
  44. package/dist/instinct-graduate.d.ts.map +1 -0
  45. package/dist/instinct-graduate.js +253 -0
  46. package/dist/instinct-graduate.js.map +1 -0
  47. package/dist/instinct-parser.d.ts.map +1 -1
  48. package/dist/instinct-parser.js +18 -0
  49. package/dist/instinct-parser.js.map +1 -1
  50. package/dist/instinct-tools.d.ts.map +1 -1
  51. package/dist/instinct-tools.js +19 -0
  52. package/dist/instinct-tools.js.map +1 -1
  53. package/dist/instinct-validator.d.ts +61 -0
  54. package/dist/instinct-validator.d.ts.map +1 -0
  55. package/dist/instinct-validator.js +235 -0
  56. package/dist/instinct-validator.js.map +1 -0
  57. package/dist/observation-signal.d.ts +34 -0
  58. package/dist/observation-signal.d.ts.map +1 -0
  59. package/dist/observation-signal.js +66 -0
  60. package/dist/observation-signal.js.map +1 -0
  61. package/dist/prompts/analyzer-system-single-shot.d.ts.map +1 -1
  62. package/dist/prompts/analyzer-system-single-shot.js +82 -3
  63. package/dist/prompts/analyzer-system-single-shot.js.map +1 -1
  64. package/dist/prompts/analyzer-user-single-shot.d.ts.map +1 -1
  65. package/dist/prompts/analyzer-user-single-shot.js +5 -3
  66. package/dist/prompts/analyzer-user-single-shot.js.map +1 -1
  67. package/dist/skill-scaffold.d.ts +23 -0
  68. package/dist/skill-scaffold.d.ts.map +1 -0
  69. package/dist/skill-scaffold.js +62 -0
  70. package/dist/skill-scaffold.js.map +1 -0
  71. package/dist/types.d.ts +9 -0
  72. package/dist/types.d.ts.map +1 -1
  73. package/package.json +1 -1
  74. package/src/agents-md.ts +73 -3
  75. package/src/analysis-event-log.ts +171 -0
  76. package/src/analysis-notification.ts +79 -0
  77. package/src/cli/analyze-single-shot.ts +131 -5
  78. package/src/cli/analyze.ts +157 -15
  79. package/src/command-scaffold.ts +105 -0
  80. package/src/confidence.ts +35 -8
  81. package/src/config.ts +40 -0
  82. package/src/graduation.ts +243 -0
  83. package/src/index.ts +16 -0
  84. package/src/instinct-cleanup.ts +204 -0
  85. package/src/instinct-graduate.ts +377 -0
  86. package/src/instinct-parser.ts +18 -0
  87. package/src/instinct-tools.ts +26 -0
  88. package/src/instinct-validator.ts +287 -0
  89. package/src/observation-signal.ts +80 -0
  90. package/src/prompts/analyzer-system-single-shot.ts +82 -3
  91. package/src/prompts/analyzer-user-single-shot.ts +11 -2
  92. package/src/skill-scaffold.ts +90 -0
  93. package/src/types.ts +11 -0
@@ -16,12 +16,29 @@ const OBS_BRACKET_LOW_MAX = 2;
16
16
  const OBS_BRACKET_MED_MAX = 5;
17
17
  const OBS_BRACKET_HIGH_MAX = 10;
18
18
  // adjustConfidence deltas
19
- const DELTA_CONFIRMED = 0.05;
19
+ // Confirmation uses diminishing returns to prevent runaway confidence on trivially easy-to-confirm instincts.
20
+ const DELTA_CONFIRMED_TIER1 = 0.05; // 1st–3rd confirmation
21
+ const DELTA_CONFIRMED_TIER2 = 0.03; // 4th–6th confirmation
22
+ const DELTA_CONFIRMED_TIER3 = 0.01; // 7th+ confirmation
20
23
  const DELTA_CONTRADICTED = -0.15;
21
24
  const DELTA_INACTIVE = 0;
25
+ const CONFIRMED_TIER1_MAX = 3;
26
+ const CONFIRMED_TIER2_MAX = 6;
22
27
  // applyPassiveDecay
23
- const DECAY_PER_WEEK = 0.02;
28
+ // Increased from 0.02 to 0.05: at 0.5 confidence, reaches 0.1 in ~8 weeks instead of 20.
29
+ const DECAY_PER_WEEK = 0.05;
24
30
  const MS_PER_WEEK = 7 * 24 * 60 * 60 * 1000;
31
+ /**
32
+ * Returns the confirmation confidence delta using diminishing returns.
33
+ * Higher confirmed_count yields smaller increments to prevent runaway scores.
34
+ */
35
+ export function confirmationDelta(confirmedCount) {
36
+ if (confirmedCount <= CONFIRMED_TIER1_MAX)
37
+ return DELTA_CONFIRMED_TIER1;
38
+ if (confirmedCount <= CONFIRMED_TIER2_MAX)
39
+ return DELTA_CONFIRMED_TIER2;
40
+ return DELTA_CONFIRMED_TIER3;
41
+ }
25
42
  // ---------------------------------------------------------------------------
26
43
  // Helpers
27
44
  // ---------------------------------------------------------------------------
@@ -50,15 +67,26 @@ export function initialConfidence(observationCount) {
50
67
  }
51
68
  /**
52
69
  * Adjusts confidence based on a feedback outcome from the observer loop.
70
+ * For "confirmed" outcomes, applies diminishing returns based on how many
71
+ * times the instinct has already been confirmed (higher count = smaller delta).
53
72
  * Returns the clamped confidence and a flag indicating if removal is warranted.
73
+ *
74
+ * @param current - Current confidence value
75
+ * @param outcome - Feedback outcome type
76
+ * @param confirmedCount - Current confirmed_count (used for diminishing returns on confirmations)
54
77
  */
55
- export function adjustConfidence(current, outcome) {
56
- const deltas = {
57
- confirmed: DELTA_CONFIRMED,
58
- contradicted: DELTA_CONTRADICTED,
59
- inactive: DELTA_INACTIVE,
60
- };
61
- const raw = current + deltas[outcome];
78
+ export function adjustConfidence(current, outcome, confirmedCount = 0) {
79
+ let delta;
80
+ if (outcome === "confirmed") {
81
+ delta = confirmationDelta(confirmedCount);
82
+ }
83
+ else if (outcome === "contradicted") {
84
+ delta = DELTA_CONTRADICTED;
85
+ }
86
+ else {
87
+ delta = DELTA_INACTIVE;
88
+ }
89
+ const raw = current + delta;
62
90
  return toResult(raw);
63
91
  }
64
92
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,6BAA6B;AAC7B,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,0BAA0B;AAC1B,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC;AACjC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,oBAAoB;AACpB,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAa5C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,iBAAiB,GAAG,GAAG,GAAG,SAAS,CAAC;IAC1C,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,gBAAwB;IACxD,IAAI,gBAAgB,IAAI,mBAAmB;QAAE,OAAO,WAAW,CAAC;IAChE,IAAI,gBAAgB,IAAI,mBAAmB;QAAE,OAAO,WAAW,CAAC;IAChE,IAAI,gBAAgB,IAAI,oBAAoB;QAAE,OAAO,YAAY,CAAC;IAClE,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,OAAwB;IAExB,MAAM,MAAM,GAAoC;QAC9C,SAAS,EAAE,eAAe;QAC1B,YAAY,EAAE,kBAAkB;QAChC,QAAQ,EAAE,cAAc;KACzB,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,WAAmB;IAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;IAC7C,MAAM,KAAK,GAAG,YAAY,GAAG,cAAc,CAAC;IAC5C,MAAM,GAAG,GAAG,UAAU,GAAG,KAAK,CAAC;IAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,6BAA6B;AAC7B,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,0BAA0B;AAC1B,8GAA8G;AAC9G,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,uBAAuB;AAC3D,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,uBAAuB;AAC3D,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,oBAAoB;AACxD,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC;AACjC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,oBAAoB;AACpB,yFAAyF;AACzF,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAQ5C;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,cAAsB;IACtD,IAAI,cAAc,IAAI,mBAAmB;QAAE,OAAO,qBAAqB,CAAC;IACxE,IAAI,cAAc,IAAI,mBAAmB;QAAE,OAAO,qBAAqB,CAAC;IACxE,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAOD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,iBAAiB,GAAG,GAAG,GAAG,SAAS,CAAC;IAC1C,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,gBAAwB;IACxD,IAAI,gBAAgB,IAAI,mBAAmB;QAAE,OAAO,WAAW,CAAC;IAChE,IAAI,gBAAgB,IAAI,mBAAmB;QAAE,OAAO,WAAW,CAAC;IAChE,IAAI,gBAAgB,IAAI,oBAAoB;QAAE,OAAO,YAAY,CAAC;IAClE,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,OAAwB,EACxB,cAAc,GAAG,CAAC;IAElB,IAAI,KAAa,CAAC;IAClB,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,KAAK,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QACtC,KAAK,GAAG,kBAAkB,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,cAAc,CAAC;IACzB,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,CAAC;IAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,WAAmB;IAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;IAC7C,MAAM,KAAK,GAAG,YAAY,GAAG,cAAc,CAAC;IAC5C,MAAM,GAAG,GAAG,UAAU,GAAG,KAAK,CAAC;IAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
package/dist/config.d.ts CHANGED
@@ -9,6 +9,22 @@ import type { Config } from "./types.js";
9
9
  */
10
10
  export declare const SKILL_DOMAINS: Record<string, string>;
11
11
  export declare const CONFIG_PATH: string;
12
+ /** Minimum age in days before an instinct is eligible for graduation. */
13
+ export declare const GRADUATION_MIN_AGE_DAYS = 7;
14
+ /** Minimum confidence to qualify for graduation. */
15
+ export declare const GRADUATION_MIN_CONFIDENCE = 0.75;
16
+ /** Minimum confirmed_count to qualify for graduation. */
17
+ export declare const GRADUATION_MIN_CONFIRMED = 3;
18
+ /** Maximum contradicted_count allowed for graduation. */
19
+ export declare const GRADUATION_MAX_CONTRADICTED = 1;
20
+ /** Minimum related instincts in same domain to propose a skill scaffold. */
21
+ export declare const GRADUATION_SKILL_CLUSTER_SIZE = 3;
22
+ /** Minimum related instincts in same domain to propose a command scaffold. */
23
+ export declare const GRADUATION_COMMAND_CLUSTER_SIZE = 3;
24
+ /** Maximum instinct age in days before TTL cull (aggressive decay / deletion). */
25
+ export declare const GRADUATION_TTL_MAX_DAYS = 28;
26
+ /** Confidence threshold below which TTL-expired instincts are deleted outright. */
27
+ export declare const GRADUATION_TTL_CULL_CONFIDENCE = 0.3;
12
28
  export declare const DEFAULT_CONFIG: Config;
13
29
  /**
14
30
  * Loads config from ~/.pi/continuous-learning/config.json.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAMzC;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWhD,CAAC;AAEF,eAAO,MAAM,WAAW,QAKvB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAW5B,CAAC;AA4BF;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA2BnC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAMzC;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWhD,CAAC;AAEF,eAAO,MAAM,WAAW,QAKvB,CAAC;AAMF,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,oDAAoD;AACpD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,yDAAyD;AACzD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,4EAA4E;AAC5E,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,mFAAmF;AACnF,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,MAiB5B,CAAC;AAkCF;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA2BnC"}
package/dist/config.js CHANGED
@@ -27,6 +27,25 @@ export const SKILL_DOMAINS = {
27
27
  documentation: "documentation writing and standards",
28
28
  };
29
29
  export const CONFIG_PATH = path.join(os.homedir(), ".pi", "continuous-learning", "config.json");
30
+ // ---------------------------------------------------------------------------
31
+ // Graduation maturity criteria
32
+ // ---------------------------------------------------------------------------
33
+ /** Minimum age in days before an instinct is eligible for graduation. */
34
+ export const GRADUATION_MIN_AGE_DAYS = 7;
35
+ /** Minimum confidence to qualify for graduation. */
36
+ export const GRADUATION_MIN_CONFIDENCE = 0.75;
37
+ /** Minimum confirmed_count to qualify for graduation. */
38
+ export const GRADUATION_MIN_CONFIRMED = 3;
39
+ /** Maximum contradicted_count allowed for graduation. */
40
+ export const GRADUATION_MAX_CONTRADICTED = 1;
41
+ /** Minimum related instincts in same domain to propose a skill scaffold. */
42
+ export const GRADUATION_SKILL_CLUSTER_SIZE = 3;
43
+ /** Minimum related instincts in same domain to propose a command scaffold. */
44
+ export const GRADUATION_COMMAND_CLUSTER_SIZE = 3;
45
+ /** Maximum instinct age in days before TTL cull (aggressive decay / deletion). */
46
+ export const GRADUATION_TTL_MAX_DAYS = 28;
47
+ /** Confidence threshold below which TTL-expired instincts are deleted outright. */
48
+ export const GRADUATION_TTL_CULL_CONFIDENCE = 0.3;
30
49
  export const DEFAULT_CONFIG = {
31
50
  run_interval_minutes: 5,
32
51
  min_observations_to_analyze: 20,
@@ -38,6 +57,12 @@ export const DEFAULT_CONFIG = {
38
57
  active_hours_start: 8,
39
58
  active_hours_end: 23,
40
59
  max_idle_seconds: 1800,
60
+ // Volume control defaults
61
+ max_total_instincts_per_project: 30,
62
+ max_total_instincts_global: 20,
63
+ max_new_instincts_per_run: 3,
64
+ flagged_cleanup_days: 7,
65
+ instinct_ttl_days: 28,
41
66
  };
42
67
  // ---------------------------------------------------------------------------
43
68
  // TypeBox schema for partial config overrides (runtime validation)
@@ -54,6 +79,12 @@ const PartialConfigSchema = Type.Partial(Type.Object({
54
79
  active_hours_end: Type.Number(),
55
80
  max_idle_seconds: Type.Number(),
56
81
  log_path: Type.String(),
82
+ // Volume control
83
+ max_total_instincts_per_project: Type.Number(),
84
+ max_total_instincts_global: Type.Number(),
85
+ max_new_instincts_per_run: Type.Number(),
86
+ flagged_cleanup_days: Type.Number(),
87
+ instinct_ttl_days: Type.Number(),
57
88
  }));
58
89
  // ---------------------------------------------------------------------------
59
90
  // loadConfig
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGhD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,GAAG,EAAE,mCAAmC;IACxC,OAAO,EAAE,kCAAkC;IAC3C,SAAS,EAAE,8BAA8B;IACzC,QAAQ,EAAE,qCAAqC;IAC/C,UAAU,EAAE,qCAAqC;IACjD,GAAG,EAAE,iBAAiB;IACtB,MAAM,EAAE,kCAAkC;IAC1C,QAAQ,EAAE,iDAAiD;IAC3D,WAAW,EAAE,0BAA0B;IACvC,aAAa,EAAE,qCAAqC;CACrD,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAClC,EAAE,CAAC,OAAO,EAAE,EACZ,KAAK,EACL,qBAAqB,EACrB,aAAa,CACd,CAAC;AAEF,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E,yEAAyE;AACzE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC,oDAAoD;AACpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C,yDAAyD;AACzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,yDAAyD;AACzD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C,8EAA8E;AAC9E,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAEjD,kFAAkF;AAClF,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,mFAAmF;AACnF,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,oBAAoB,EAAE,CAAC;IACvB,2BAA2B,EAAE,EAAE;IAC/B,cAAc,EAAE,GAAG;IACnB,aAAa,EAAE,EAAE;IACjB,mBAAmB,EAAE,IAAI;IACzB,KAAK,EAAE,kBAAkB;IACzB,eAAe,EAAE,GAAG;IACpB,kBAAkB,EAAE,CAAC;IACrB,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,IAAI;IACtB,0BAA0B;IAC1B,+BAA+B,EAAE,EAAE;IACnC,0BAA0B,EAAE,EAAE;IAC9B,yBAAyB,EAAE,CAAC;IAC5B,oBAAoB,EAAE,CAAC;IACvB,iBAAiB,EAAE,EAAE;CACtB,CAAC;AAEF,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CACtC,IAAI,CAAC,MAAM,CAAC;IACV,oBAAoB,EAAE,IAAI,CAAC,MAAM,EAAE;IACnC,2BAA2B,EAAE,IAAI,CAAC,MAAM,EAAE;IAC1C,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE;IAC7B,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE;IAC5B,mBAAmB,EAAE,IAAI,CAAC,MAAM,EAAE;IAClC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;IACpB,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE;IAC9B,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE;IACjC,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE;IAC/B,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE;IAC/B,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;IACvB,iBAAiB;IACjB,+BAA+B,EAAE,IAAI,CAAC,MAAM,EAAE;IAC9C,0BAA0B,EAAE,IAAI,CAAC,MAAM,EAAE;IACzC,yBAAyB,EAAE,IAAI,CAAC,MAAM,EAAE;IACxC,oBAAoB,EAAE,IAAI,CAAC,MAAM,EAAE;IACnC,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE;CACjC,CAAC,CACH,CAAC;AAIF,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAW,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,wDAAwD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,yDAAyD,MAAM,CAAC,GAAG,CAAC,mBAAmB,CACxF,CAAC;QACF,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,yEAAyE;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,MAAM,CAAkB,CAAC;IAE1E,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Graduation pipeline - pure functions for instinct lifecycle management.
3
+ *
4
+ * Determines which instincts are mature enough to graduate into permanent
5
+ * knowledge (AGENTS.md, skills, or commands), and which have exceeded
6
+ * their TTL and should be culled.
7
+ */
8
+ import type { Instinct, GraduationTarget } from "./types.js";
9
+ export interface MaturityCheck {
10
+ eligible: boolean;
11
+ reasons: string[];
12
+ }
13
+ export interface GraduationCandidate {
14
+ instinct: Instinct;
15
+ target: GraduationTarget;
16
+ reason: string;
17
+ }
18
+ export interface DomainCluster {
19
+ domain: string;
20
+ instincts: Instinct[];
21
+ }
22
+ export interface TtlResult {
23
+ toCull: Instinct[];
24
+ toDecay: Instinct[];
25
+ }
26
+ /**
27
+ * Returns the age of an instinct in days based on created_at.
28
+ * Uses a reference date for testability.
29
+ */
30
+ export declare function getAgeDays(instinct: Instinct, now?: number): number;
31
+ /**
32
+ * Checks whether an instinct meets all graduation maturity criteria.
33
+ * Returns structured result with reasons for any failures.
34
+ */
35
+ export declare function checkMaturity(instinct: Instinct, agentsMdContent: string | null, now?: number): MaturityCheck;
36
+ /**
37
+ * Finds all instincts that qualify for graduation to AGENTS.md.
38
+ */
39
+ export declare function findAgentsMdCandidates(instincts: Instinct[], agentsMdContent: string | null, now?: number): GraduationCandidate[];
40
+ /**
41
+ * Groups instincts by domain, returning only clusters meeting the size threshold.
42
+ */
43
+ export declare function findDomainClusters(instincts: Instinct[], minSize: number): DomainCluster[];
44
+ /**
45
+ * Finds instinct clusters that qualify for skill scaffolding.
46
+ */
47
+ export declare function findSkillCandidates(instincts: Instinct[]): DomainCluster[];
48
+ /**
49
+ * Finds instinct clusters that qualify for command scaffolding.
50
+ */
51
+ export declare function findCommandCandidates(instincts: Instinct[]): DomainCluster[];
52
+ /**
53
+ * Identifies instincts that have exceeded the TTL without graduating.
54
+ * - Instincts with confidence < cull threshold are marked for outright deletion
55
+ * - Others are marked for aggressive decay
56
+ */
57
+ export declare function enforceTtl(instincts: Instinct[], now?: number): TtlResult;
58
+ /**
59
+ * Marks an instinct as graduated. Returns a new instinct with graduated_to
60
+ * and graduated_at set. Does not mutate the original.
61
+ */
62
+ export declare function markGraduated(instinct: Instinct, target: GraduationTarget, now?: Date): Instinct;
63
+ //# sourceMappingURL=graduation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graduation.d.ts","sourceRoot":"","sources":["../src/graduation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAsB7D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAa,GAAG,MAAM,CAGvE;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAa,GACf,aAAa,CA+Cf;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,QAAQ,EAAE,EACrB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAa,GACf,mBAAmB,EAAE,CAevB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,EAAE,MAAM,GACd,aAAa,EAAE,CAmBjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAE1E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAE5E;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,QAAQ,EAAE,EACrB,GAAG,SAAa,GACf,SAAS,CAmBX;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,gBAAgB,EACxB,GAAG,OAAa,GACf,QAAQ,CAOV"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Graduation pipeline - pure functions for instinct lifecycle management.
3
+ *
4
+ * Determines which instincts are mature enough to graduate into permanent
5
+ * knowledge (AGENTS.md, skills, or commands), and which have exceeded
6
+ * their TTL and should be culled.
7
+ */
8
+ import { GRADUATION_MIN_AGE_DAYS, GRADUATION_MIN_CONFIDENCE, GRADUATION_MIN_CONFIRMED, GRADUATION_MAX_CONTRADICTED, GRADUATION_SKILL_CLUSTER_SIZE, GRADUATION_COMMAND_CLUSTER_SIZE, GRADUATION_TTL_MAX_DAYS, GRADUATION_TTL_CULL_CONFIDENCE, } from "./config.js";
9
+ // ---------------------------------------------------------------------------
10
+ // Constants
11
+ // ---------------------------------------------------------------------------
12
+ const MS_PER_DAY = 24 * 60 * 60 * 1000;
13
+ // ---------------------------------------------------------------------------
14
+ // Age helpers
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * Returns the age of an instinct in days based on created_at.
18
+ * Uses a reference date for testability.
19
+ */
20
+ export function getAgeDays(instinct, now = Date.now()) {
21
+ const createdAt = new Date(instinct.created_at).getTime();
22
+ return Math.max(0, (now - createdAt) / MS_PER_DAY);
23
+ }
24
+ // ---------------------------------------------------------------------------
25
+ // Maturity check
26
+ // ---------------------------------------------------------------------------
27
+ /**
28
+ * Checks whether an instinct meets all graduation maturity criteria.
29
+ * Returns structured result with reasons for any failures.
30
+ */
31
+ export function checkMaturity(instinct, agentsMdContent, now = Date.now()) {
32
+ const reasons = [];
33
+ if (instinct.graduated_to !== undefined) {
34
+ return { eligible: false, reasons: [`Already graduated to ${instinct.graduated_to}`] };
35
+ }
36
+ if (instinct.flagged_for_removal) {
37
+ return { eligible: false, reasons: ["Flagged for removal"] };
38
+ }
39
+ const ageDays = getAgeDays(instinct, now);
40
+ if (ageDays < GRADUATION_MIN_AGE_DAYS) {
41
+ reasons.push(`Age ${ageDays.toFixed(1)}d < ${GRADUATION_MIN_AGE_DAYS}d minimum`);
42
+ }
43
+ if (instinct.confidence < GRADUATION_MIN_CONFIDENCE) {
44
+ reasons.push(`Confidence ${instinct.confidence.toFixed(2)} < ${GRADUATION_MIN_CONFIDENCE} minimum`);
45
+ }
46
+ if (instinct.confirmed_count < GRADUATION_MIN_CONFIRMED) {
47
+ reasons.push(`Confirmed ${instinct.confirmed_count} < ${GRADUATION_MIN_CONFIRMED} minimum`);
48
+ }
49
+ if (instinct.contradicted_count > GRADUATION_MAX_CONTRADICTED) {
50
+ reasons.push(`Contradicted ${instinct.contradicted_count} > ${GRADUATION_MAX_CONTRADICTED} maximum`);
51
+ }
52
+ // Check for duplicates in AGENTS.md (simple substring match on title/trigger)
53
+ if (agentsMdContent !== null) {
54
+ const lowerContent = agentsMdContent.toLowerCase();
55
+ const titleMatch = lowerContent.includes(instinct.title.toLowerCase());
56
+ const triggerMatch = lowerContent.includes(instinct.trigger.toLowerCase());
57
+ if (titleMatch && triggerMatch) {
58
+ reasons.push("Appears to duplicate existing AGENTS.md content");
59
+ }
60
+ }
61
+ return { eligible: reasons.length === 0, reasons };
62
+ }
63
+ // ---------------------------------------------------------------------------
64
+ // Candidate scanning
65
+ // ---------------------------------------------------------------------------
66
+ /**
67
+ * Finds all instincts that qualify for graduation to AGENTS.md.
68
+ */
69
+ export function findAgentsMdCandidates(instincts, agentsMdContent, now = Date.now()) {
70
+ const candidates = [];
71
+ for (const instinct of instincts) {
72
+ const check = checkMaturity(instinct, agentsMdContent, now);
73
+ if (check.eligible) {
74
+ candidates.push({
75
+ instinct,
76
+ target: "agents-md",
77
+ reason: `Mature instinct (${instinct.confidence.toFixed(2)} confidence, ${instinct.confirmed_count} confirmations)`,
78
+ });
79
+ }
80
+ }
81
+ return candidates;
82
+ }
83
+ /**
84
+ * Groups instincts by domain, returning only clusters meeting the size threshold.
85
+ */
86
+ export function findDomainClusters(instincts, minSize) {
87
+ const byDomain = new Map();
88
+ for (const instinct of instincts) {
89
+ if (instinct.graduated_to !== undefined)
90
+ continue;
91
+ if (instinct.flagged_for_removal)
92
+ continue;
93
+ const existing = byDomain.get(instinct.domain) ?? [];
94
+ byDomain.set(instinct.domain, [...existing, instinct]);
95
+ }
96
+ const clusters = [];
97
+ for (const [domain, domainInstincts] of byDomain) {
98
+ if (domainInstincts.length >= minSize) {
99
+ clusters.push({ domain, instincts: domainInstincts });
100
+ }
101
+ }
102
+ return clusters.sort((a, b) => b.instincts.length - a.instincts.length);
103
+ }
104
+ /**
105
+ * Finds instinct clusters that qualify for skill scaffolding.
106
+ */
107
+ export function findSkillCandidates(instincts) {
108
+ return findDomainClusters(instincts, GRADUATION_SKILL_CLUSTER_SIZE);
109
+ }
110
+ /**
111
+ * Finds instinct clusters that qualify for command scaffolding.
112
+ */
113
+ export function findCommandCandidates(instincts) {
114
+ return findDomainClusters(instincts, GRADUATION_COMMAND_CLUSTER_SIZE);
115
+ }
116
+ // ---------------------------------------------------------------------------
117
+ // TTL enforcement
118
+ // ---------------------------------------------------------------------------
119
+ /**
120
+ * Identifies instincts that have exceeded the TTL without graduating.
121
+ * - Instincts with confidence < cull threshold are marked for outright deletion
122
+ * - Others are marked for aggressive decay
123
+ */
124
+ export function enforceTtl(instincts, now = Date.now()) {
125
+ const toCull = [];
126
+ const toDecay = [];
127
+ for (const instinct of instincts) {
128
+ // Skip already-graduated instincts
129
+ if (instinct.graduated_to !== undefined)
130
+ continue;
131
+ const ageDays = getAgeDays(instinct, now);
132
+ if (ageDays < GRADUATION_TTL_MAX_DAYS)
133
+ continue;
134
+ if (instinct.confidence < GRADUATION_TTL_CULL_CONFIDENCE) {
135
+ toCull.push(instinct);
136
+ }
137
+ else {
138
+ toDecay.push(instinct);
139
+ }
140
+ }
141
+ return { toCull, toDecay };
142
+ }
143
+ /**
144
+ * Marks an instinct as graduated. Returns a new instinct with graduated_to
145
+ * and graduated_at set. Does not mutate the original.
146
+ */
147
+ export function markGraduated(instinct, target, now = new Date()) {
148
+ return {
149
+ ...instinct,
150
+ graduated_to: target,
151
+ graduated_at: now.toISOString(),
152
+ updated_at: now.toISOString(),
153
+ };
154
+ }
155
+ //# sourceMappingURL=graduation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graduation.js","sourceRoot":"","sources":["../src/graduation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA2B,MAAM,+BAA+B,CAAC;AA8B3F,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CA6J/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA2B,MAAM,+BAA+B,CAAC;AAgC3F,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CA2K/C"}
package/dist/index.js CHANGED
@@ -20,8 +20,10 @@ import { handleInstinctImport, COMMAND_NAME as IMPORT_CMD } from "./instinct-imp
20
20
  import { handleInstinctPromote, COMMAND_NAME as PROMOTE_CMD } from "./instinct-promote.js";
21
21
  import { handleInstinctEvolve, COMMAND_NAME as EVOLVE_CMD } from "./instinct-evolve.js";
22
22
  import { handleInstinctProjects, COMMAND_NAME as PROJECTS_CMD } from "./instinct-projects.js";
23
+ import { handleInstinctGraduate, COMMAND_NAME as GRADUATE_CMD } from "./instinct-graduate.js";
23
24
  import { registerAllTools } from "./instinct-tools.js";
24
25
  import { logError } from "./error-logger.js";
26
+ import { checkAnalysisNotifications } from "./analysis-notification.js";
25
27
  export default function (pi) {
26
28
  let config = null;
27
29
  let project = null;
@@ -53,6 +55,7 @@ export default function (pi) {
53
55
  if (!project || !config)
54
56
  return;
55
57
  handleBeforeAgentStart(event, ctx, project);
58
+ checkAnalysisNotifications(ctx, project.id);
56
59
  return handleBeforeAgentStartInjection(event, ctx, config, project.id) ?? undefined;
57
60
  }
58
61
  catch (err) {
@@ -165,5 +168,9 @@ export default function (pi) {
165
168
  description: "List all known projects and their instinct counts",
166
169
  handler: (args, ctx) => handleInstinctProjects(args, ctx),
167
170
  });
171
+ pi.registerCommand(GRADUATE_CMD, {
172
+ description: "Graduate mature instincts to AGENTS.md, skills, or commands",
173
+ handler: (args, ctx) => handleInstinctGraduate(args, ctx, pi, project?.id, undefined, project?.root ?? null),
174
+ });
168
175
  }
169
176
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Auto-cleanup rules for instinct volume control.
3
+ *
4
+ * Cleanup is run at the start of each analysis pass, before decay.
5
+ * Rules (all thresholds are config-driven):
6
+ * 1. Delete flagged_for_removal instincts older than `flagged_cleanup_days`.
7
+ * 2. Delete zero-confirmation instincts older than `instinct_ttl_days`.
8
+ * 3. Enforce per-dir hard caps by deleting lowest-confidence instincts.
9
+ */
10
+ import type { Config } from "./types.js";
11
+ /**
12
+ * Deletes instincts marked `flagged_for_removal` whose `updated_at` is older
13
+ * than `flaggedCleanupDays`. `updated_at` is set when the flag is applied,
14
+ * so it serves as a proxy for when the instinct was flagged.
15
+ *
16
+ * @returns Number of instincts deleted.
17
+ */
18
+ export declare function cleanupFlaggedInstincts(dir: string, flaggedCleanupDays: number): number;
19
+ /**
20
+ * Deletes instincts with `confirmed_count === 0` whose `created_at` is older
21
+ * than `ttlDays`. These instincts were never validated by the agent and have
22
+ * aged out of relevance.
23
+ *
24
+ * @returns Number of instincts deleted.
25
+ */
26
+ export declare function cleanupZeroConfirmedInstincts(dir: string, ttlDays: number): number;
27
+ /**
28
+ * Enforces a hard cap on the number of instincts in a directory.
29
+ * When the count exceeds `maxCount`, deletes the lowest-confidence instincts
30
+ * until the count is at or below the cap.
31
+ *
32
+ * @returns Number of instincts deleted.
33
+ */
34
+ export declare function enforceInstinctCap(dir: string, maxCount: number): number;
35
+ export interface CleanupResult {
36
+ flaggedDeleted: number;
37
+ zeroConfirmedDeleted: number;
38
+ capDeleted: number;
39
+ total: number;
40
+ }
41
+ /**
42
+ * Runs all cleanup rules against a single directory.
43
+ * Order: flagged → zero-confirmed → cap enforcement (cap runs last so it
44
+ * accounts for deletions made by the earlier rules).
45
+ */
46
+ export declare function cleanupDir(dir: string, config: Config, maxCount: number): CleanupResult;
47
+ /**
48
+ * Runs a full cleanup pass over project and global instinct directories.
49
+ * Called at the start of each analysis run, before decay.
50
+ *
51
+ * @param projectId - Project ID to clean up (skipped when null/undefined)
52
+ * @param config - Runtime config (provides all thresholds)
53
+ * @param baseDir - Base storage directory (defaults to ~/.pi/continuous-learning/)
54
+ * @returns Aggregated cleanup result across both scopes
55
+ */
56
+ export declare function runCleanupPass(projectId: string | null | undefined, config: Config, baseDir?: string): CleanupResult;
57
+ //# sourceMappingURL=instinct-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instinct-cleanup.d.ts","sourceRoot":"","sources":["../src/instinct-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAY,MAAM,EAAE,MAAM,YAAY,CAAC;AA+BnD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAeR;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,MAAM,CAeR;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBxE;AAMD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,aAAa,CASf;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,MAAM,EAAE,MAAM,EACd,OAAO,SAAe,GACrB,aAAa,CAiCf"}