@caupulican/pi-adaptative 0.80.100 → 0.80.103

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 (126) hide show
  1. package/CHANGELOG.md +201 -0
  2. package/dist/config.d.ts +11 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +17 -3
  5. package/dist/config.js.map +1 -1
  6. package/dist/core/agent-session.d.ts +72 -0
  7. package/dist/core/agent-session.d.ts.map +1 -1
  8. package/dist/core/agent-session.js +437 -46
  9. package/dist/core/agent-session.js.map +1 -1
  10. package/dist/core/autonomy/envelope-enforcement.d.ts +5 -0
  11. package/dist/core/autonomy/envelope-enforcement.d.ts.map +1 -1
  12. package/dist/core/autonomy/envelope-enforcement.js +28 -4
  13. package/dist/core/autonomy/envelope-enforcement.js.map +1 -1
  14. package/dist/core/autonomy/path-scope.d.ts.map +1 -1
  15. package/dist/core/autonomy/path-scope.js +33 -2
  16. package/dist/core/autonomy/path-scope.js.map +1 -1
  17. package/dist/core/bash-executor.d.ts.map +1 -1
  18. package/dist/core/bash-executor.js +15 -7
  19. package/dist/core/bash-executor.js.map +1 -1
  20. package/dist/core/context/brain-curator.d.ts +10 -0
  21. package/dist/core/context/brain-curator.d.ts.map +1 -1
  22. package/dist/core/context/brain-curator.js +19 -2
  23. package/dist/core/context/brain-curator.js.map +1 -1
  24. package/dist/core/context-gc.d.ts +8 -3
  25. package/dist/core/context-gc.d.ts.map +1 -1
  26. package/dist/core/context-gc.js +5 -0
  27. package/dist/core/context-gc.js.map +1 -1
  28. package/dist/core/delegation/worker-actions.d.ts +0 -10
  29. package/dist/core/delegation/worker-actions.d.ts.map +1 -1
  30. package/dist/core/delegation/worker-actions.js +5 -7
  31. package/dist/core/delegation/worker-actions.js.map +1 -1
  32. package/dist/core/delegation/worker-result.d.ts +6 -0
  33. package/dist/core/delegation/worker-result.d.ts.map +1 -1
  34. package/dist/core/delegation/worker-result.js +10 -4
  35. package/dist/core/delegation/worker-result.js.map +1 -1
  36. package/dist/core/delegation/worker-runner.d.ts +3 -0
  37. package/dist/core/delegation/worker-runner.d.ts.map +1 -1
  38. package/dist/core/delegation/worker-runner.js +6 -1
  39. package/dist/core/delegation/worker-runner.js.map +1 -1
  40. package/dist/core/doctor.d.ts +66 -0
  41. package/dist/core/doctor.d.ts.map +1 -0
  42. package/dist/core/doctor.js +144 -0
  43. package/dist/core/doctor.js.map +1 -0
  44. package/dist/core/learning/learning-audit.d.ts +13 -1
  45. package/dist/core/learning/learning-audit.d.ts.map +1 -1
  46. package/dist/core/learning/learning-audit.js +22 -1
  47. package/dist/core/learning/learning-audit.js.map +1 -1
  48. package/dist/core/learning/learning-gate.d.ts +3 -0
  49. package/dist/core/learning/learning-gate.d.ts.map +1 -1
  50. package/dist/core/learning/learning-gate.js +13 -4
  51. package/dist/core/learning/learning-gate.js.map +1 -1
  52. package/dist/core/models/local-registration.d.ts +2 -0
  53. package/dist/core/models/local-registration.d.ts.map +1 -1
  54. package/dist/core/models/local-registration.js +2 -1
  55. package/dist/core/models/local-registration.js.map +1 -1
  56. package/dist/core/models/local-runtime.d.ts +76 -2
  57. package/dist/core/models/local-runtime.d.ts.map +1 -1
  58. package/dist/core/models/local-runtime.js +233 -21
  59. package/dist/core/models/local-runtime.js.map +1 -1
  60. package/dist/core/profile-resource-selection.d.ts +15 -3
  61. package/dist/core/profile-resource-selection.d.ts.map +1 -1
  62. package/dist/core/profile-resource-selection.js +19 -9
  63. package/dist/core/profile-resource-selection.js.map +1 -1
  64. package/dist/core/resource-loader.d.ts +20 -0
  65. package/dist/core/resource-loader.d.ts.map +1 -1
  66. package/dist/core/resource-loader.js +42 -16
  67. package/dist/core/resource-loader.js.map +1 -1
  68. package/dist/core/settings-manager.d.ts +30 -0
  69. package/dist/core/settings-manager.d.ts.map +1 -1
  70. package/dist/core/settings-manager.js +65 -3
  71. package/dist/core/settings-manager.js.map +1 -1
  72. package/dist/core/skills.d.ts +14 -0
  73. package/dist/core/skills.d.ts.map +1 -1
  74. package/dist/core/skills.js +8 -0
  75. package/dist/core/skills.js.map +1 -1
  76. package/dist/core/tools/fff-search-backend.d.ts +34 -1
  77. package/dist/core/tools/fff-search-backend.d.ts.map +1 -1
  78. package/dist/core/tools/fff-search-backend.js +43 -4
  79. package/dist/core/tools/fff-search-backend.js.map +1 -1
  80. package/dist/core/tools/find.d.ts +16 -0
  81. package/dist/core/tools/find.d.ts.map +1 -1
  82. package/dist/core/tools/find.js +17 -3
  83. package/dist/core/tools/find.js.map +1 -1
  84. package/dist/core/tools/grep.d.ts +20 -0
  85. package/dist/core/tools/grep.d.ts.map +1 -1
  86. package/dist/core/tools/grep.js +15 -3
  87. package/dist/core/tools/grep.js.map +1 -1
  88. package/dist/main.d.ts.map +1 -1
  89. package/dist/main.js +17 -0
  90. package/dist/main.js.map +1 -1
  91. package/dist/modes/interactive/components/fitness-role-selector.d.ts +6 -2
  92. package/dist/modes/interactive/components/fitness-role-selector.d.ts.map +1 -1
  93. package/dist/modes/interactive/components/fitness-role-selector.js +55 -45
  94. package/dist/modes/interactive/components/fitness-role-selector.js.map +1 -1
  95. package/dist/modes/interactive/components/model-suggestion-selector.d.ts +13 -0
  96. package/dist/modes/interactive/components/model-suggestion-selector.d.ts.map +1 -0
  97. package/dist/modes/interactive/components/model-suggestion-selector.js +40 -0
  98. package/dist/modes/interactive/components/model-suggestion-selector.js.map +1 -0
  99. package/dist/modes/interactive/components/profile-resource-editor.d.ts +3 -0
  100. package/dist/modes/interactive/components/profile-resource-editor.d.ts.map +1 -1
  101. package/dist/modes/interactive/components/profile-resource-editor.js +16 -2
  102. package/dist/modes/interactive/components/profile-resource-editor.js.map +1 -1
  103. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  104. package/dist/modes/interactive/components/settings-selector.js +98 -0
  105. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  106. package/dist/modes/interactive/interactive-mode.d.ts +8 -1
  107. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  108. package/dist/modes/interactive/interactive-mode.js +50 -12
  109. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  110. package/dist/utils/safe-write-stream.d.ts +8 -0
  111. package/dist/utils/safe-write-stream.d.ts.map +1 -1
  112. package/dist/utils/safe-write-stream.js +32 -0
  113. package/dist/utils/safe-write-stream.js.map +1 -1
  114. package/dist/utils/tools-manager.d.ts +92 -2
  115. package/dist/utils/tools-manager.d.ts.map +1 -1
  116. package/dist/utils/tools-manager.js +172 -32
  117. package/dist/utils/tools-manager.js.map +1 -1
  118. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  119. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  120. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  121. package/examples/extensions/sandbox/package-lock.json +2 -2
  122. package/examples/extensions/sandbox/package.json +1 -1
  123. package/examples/extensions/with-deps/package-lock.json +2 -2
  124. package/examples/extensions/with-deps/package.json +1 -1
  125. package/npm-shrinkwrap.json +12 -36
  126. package/package.json +4 -4
@@ -29,6 +29,7 @@ import { type CustomMessage } from "./messages.ts";
29
29
  import { type ModelCapabilityProfile } from "./model-capability.ts";
30
30
  import type { ModelRegistry } from "./model-registry.ts";
31
31
  import { type StoredFitnessReport } from "./models/fitness-store.ts";
32
+ import { type LocalRuntimeDeps, OllamaRuntime } from "./models/local-runtime.ts";
32
33
  import { type PromptTemplate } from "./prompt-templates.ts";
33
34
  import { type ModelFitnessReport } from "./research/model-fitness.ts";
34
35
  import { type ResearchRunResult } from "./research/research-runner.ts";
@@ -91,6 +92,10 @@ export type AgentSessionEvent = Exclude<AgentEvent, {
91
92
  success: boolean;
92
93
  attempt: number;
93
94
  finalError?: string;
95
+ } | {
96
+ type: "routing_start";
97
+ } | {
98
+ type: "routing_end";
94
99
  };
95
100
  /** Listener function for agent session events */
96
101
  export type AgentSessionEventListener = (event: AgentSessionEvent) => void;
@@ -148,6 +153,12 @@ export interface AgentSessionConfig {
148
153
  * defaults to the real, best-effort collector.
149
154
  */
150
155
  collectWorkspaceSources?: typeof collectWorkspaceSources;
156
+ /**
157
+ * Injected fetch/spawn/exists for the local (Ollama) runtime health-check + boot used by the
158
+ * model router before a turn routed to a local model (see _ensureLocalModelReady). Unit tests
159
+ * inject fakes so they never hit a real network/process; production defaults to the real ones.
160
+ */
161
+ localRuntimeDeps?: LocalRuntimeDeps;
151
162
  }
152
163
  export interface ExtensionBindings {
153
164
  uiContext?: ExtensionUIContext;
@@ -345,6 +356,8 @@ export declare class AgentSession {
345
356
  private readonly _brainCurator;
346
357
  private _lastCurationSkipReason;
347
358
  private _inertExtensionWarnings;
359
+ /** Extensions the active resource profile removed from the runtime set (surfaced in /context). */
360
+ private _profileDeniedExtensionCount;
348
361
  private _lastPreDigestSkipReason;
349
362
  private _unboundToolGrantWarnings;
350
363
  private _toolArtifactStore;
@@ -370,6 +383,12 @@ export declare class AgentSession {
370
383
  private _cwd;
371
384
  private _agentDir;
372
385
  private _collectWorkspaceSources;
386
+ private _localRuntimeDeps?;
387
+ /** Lazy, cached by baseUrl so the router path and any other caller share one instance per server. */
388
+ private _localRuntimes;
389
+ /** Server URLs confirmed reachable THIS session — skips the health-check round trip on every
390
+ * local-routed turn once warm. Keyed the same way as _localRuntimes. */
391
+ private _localRuntimeConfirmedUp;
373
392
  private _extensionRunnerRef?;
374
393
  private _initialActiveToolNames?;
375
394
  private _allowedToolNames?;
@@ -673,6 +692,16 @@ export declare class AgentSession {
673
692
  private _emit;
674
693
  private _emitQueueUpdate;
675
694
  private _lastAssistantMessage;
695
+ /**
696
+ * User messages already painted to the UI by an early, synthetic `message_start` fired from
697
+ * `_promptUnserialized` — before the model-router judge's bounded LLM call — so the prompt
698
+ * appears immediately instead of hanging until routing finishes. The real agent-loop run emits
699
+ * its own authoritative `message_start` for the SAME message object once the turn actually
700
+ * starts; `_handleAgentEvent` consumes (deletes) it from this set to suppress that one duplicate
701
+ * listener notification. Persistence is untouched: it stays keyed off `message_end`, which is
702
+ * never added here and never suppressed.
703
+ */
704
+ private _earlyDisplayedUserMessages;
676
705
  /** Internal handler for agent events - shared by subscribe and reconnect */
677
706
  private _handleAgentEvent;
678
707
  private _willRetryAfterAgentEnd;
@@ -797,13 +826,41 @@ export declare class AgentSession {
797
826
  private _buildSituationSoulPrompt;
798
827
  private _buildSelfModificationPrompt;
799
828
  private _buildAutonomyPrompt;
829
+ private _buildSystemPromptOptionsForToolNames;
800
830
  private _rebuildSystemPrompt;
831
+ /**
832
+ * Build a system prompt for a specific tool surface WITHOUT touching the session's base prompt
833
+ * state. Used for a router-swapped turn (G4): the routed model runs against a filtered tool set,
834
+ * so it must also receive a system prompt whose tool guidelines/snippets match that filtered
835
+ * surface — but the change is per-turn, so it must not mutate `_baseSystemPromptOptions` (which
836
+ * later turns and extension events read).
837
+ */
838
+ private _buildSystemPromptForToolNames;
801
839
  private _runAgentPrompt;
802
840
  private _isModelAvailableAndAuthed;
803
841
  private _resolveExecutorRoute;
804
842
  /** True if a run_toolkit_script tool result since `fromIndex` actually EXECUTED (not error/ambiguous). */
805
843
  private _executorTurnExecutedScript;
806
844
  private _buildExecutorRefinedPrompt;
845
+ /**
846
+ * Shared {@link OllamaRuntime} for a given server, lazily created and cached by baseUrl so every
847
+ * caller — the router's readiness gate below and any host UI's own model-lifecycle commands
848
+ * (e.g. `/models`) — sees and can stop the SAME pi-managed process instead of each tracking its
849
+ * own untracked child.
850
+ */
851
+ getLocalRuntime(baseUrl?: string): OllamaRuntime;
852
+ /** models.json registers a local model's baseUrl as `<server>/v1` (OpenAI-compat); the runtime's
853
+ * own health/boot endpoints are on the Ollama-native server root. */
854
+ private _deriveOllamaServerUrl;
855
+ /**
856
+ * If the last assistant message in this session was an error from THIS exact local server, a
857
+ * cached "confirmed up" flag would be stale (the server may have died mid-session) — drop it so
858
+ * the next ensure-check is a real one instead of trusting stale state.
859
+ */
860
+ private _invalidateLocalRuntimeIfLastCallFailed;
861
+ private _ensureLocalModelReady;
862
+ private _maybeInstallOllamaOnConsent;
863
+ private _ensureRouteModelReady;
807
864
  private _resolveModelRouterTurnRoute;
808
865
  private _resolveModelRouterModelForIntent;
809
866
  private _resolveConfiguredTierModel;
@@ -1021,6 +1078,21 @@ export declare class AgentSession {
1021
1078
  private _isToolOrCommandAllowedByProfile;
1022
1079
  private _hasToolOrCommandProfileGate;
1023
1080
  private _filterExtensionsForRuntime;
1081
+ /**
1082
+ * /context observations for skills/prompts/extensions the active resource profile removed from
1083
+ * listings — the analog of the withheld-AGENTS.md warning. Strict UAC makes these silently absent,
1084
+ * so a lean profile's effect on the resource surface stays visible. Counts are profile-scoped
1085
+ * (skills/prompts via the profile-independent discovery universe filtered by the live profile
1086
+ * filter; extensions via the runtime filter's denied tally). Empty when nothing is withheld.
1087
+ *
1088
+ * Uses `isResourceDeniedByActiveProfile` (profile-only), not `isResourceAllowedByProfile` (which
1089
+ * also folds in the user's own legacy `disabledResources` list): a plain user-disabled resource
1090
+ * must never be misattributed to "the active resource profile" — that case is already surfaced by
1091
+ * the G14 disable-wins warning. With no active profile at all, the helper always reports nothing
1092
+ * denied, so this naturally stays silent (extensions keep their own runtime-filter-derived count,
1093
+ * which is already correctly zero absent a profile).
1094
+ */
1095
+ private _profileDeniedResourceObservations;
1024
1096
  private _reapplyActiveProfileModelSettings;
1025
1097
  private _initializeMemory;
1026
1098
  /** Register a memory provider contributed by an extension; applied on the next memory (re)init. */