smithers-orchestrator 0.25.3 → 0.26.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smithers-orchestrator",
3
- "version": "0.25.3",
3
+ "version": "0.26.0",
4
4
  "description": "Public Smithers facade for durable coding-agent workflows and Gateway operation",
5
5
  "license": "MIT",
6
6
  "homepage": "https://smithers.sh",
@@ -92,28 +92,28 @@
92
92
  "incur": "^0.4.1",
93
93
  "react": "^19.2.5",
94
94
  "zod": "^4.3.6",
95
- "@smithers-orchestrator/agents": "0.25.3",
96
- "@smithers-orchestrator/components": "0.25.3",
97
- "@smithers-orchestrator/cli": "0.25.3",
98
- "@smithers-orchestrator/driver": "0.25.3",
99
- "@smithers-orchestrator/control-plane": "0.25.3",
100
- "@smithers-orchestrator/engine": "0.25.3",
101
- "@smithers-orchestrator/gateway-client": "0.25.3",
102
- "@smithers-orchestrator/gateway-react": "0.25.3",
103
- "@smithers-orchestrator/errors": "0.25.3",
104
- "@smithers-orchestrator/db": "0.25.3",
105
- "@smithers-orchestrator/memory": "0.25.3",
106
- "@smithers-orchestrator/graph": "0.25.3",
107
- "@smithers-orchestrator/observability": "0.25.3",
108
- "@smithers-orchestrator/sandbox": "0.25.3",
109
- "@smithers-orchestrator/openapi": "0.25.3",
110
- "@smithers-orchestrator/react-reconciler": "0.25.3",
111
- "@smithers-orchestrator/scheduler": "0.25.3",
112
- "@smithers-orchestrator/scorers": "0.25.3",
113
- "@smithers-orchestrator/server": "0.25.3",
114
- "@smithers-orchestrator/time-travel": "0.25.3",
115
- "@smithers-orchestrator/tool-context": "0.25.3",
116
- "@smithers-orchestrator/vcs": "0.25.3"
95
+ "@smithers-orchestrator/agents": "0.26.0",
96
+ "@smithers-orchestrator/components": "0.26.0",
97
+ "@smithers-orchestrator/control-plane": "0.26.0",
98
+ "@smithers-orchestrator/db": "0.26.0",
99
+ "@smithers-orchestrator/cli": "0.26.0",
100
+ "@smithers-orchestrator/driver": "0.26.0",
101
+ "@smithers-orchestrator/errors": "0.26.0",
102
+ "@smithers-orchestrator/engine": "0.26.0",
103
+ "@smithers-orchestrator/gateway-client": "0.26.0",
104
+ "@smithers-orchestrator/gateway-react": "0.26.0",
105
+ "@smithers-orchestrator/graph": "0.26.0",
106
+ "@smithers-orchestrator/openapi": "0.26.0",
107
+ "@smithers-orchestrator/memory": "0.26.0",
108
+ "@smithers-orchestrator/observability": "0.26.0",
109
+ "@smithers-orchestrator/react-reconciler": "0.26.0",
110
+ "@smithers-orchestrator/sandbox": "0.26.0",
111
+ "@smithers-orchestrator/scheduler": "0.26.0",
112
+ "@smithers-orchestrator/scorers": "0.26.0",
113
+ "@smithers-orchestrator/server": "0.26.0",
114
+ "@smithers-orchestrator/time-travel": "0.26.0",
115
+ "@smithers-orchestrator/vcs": "0.26.0",
116
+ "@smithers-orchestrator/tool-context": "0.26.0"
117
117
  },
118
118
  "optionalDependencies": {
119
119
  "@electric-sql/pglite": "0.5.1",
package/src/index.d.ts CHANGED
@@ -58,7 +58,7 @@ import { WorkflowProps } from '@smithers-orchestrator/components/components/Work
58
58
  import * as _smithers_server_gateway from '@smithers-orchestrator/server/gateway';
59
59
  export { Gateway } from '@smithers-orchestrator/server/gateway';
60
60
  import * as _smithers_agents from '@smithers-orchestrator/agents';
61
- export { AmpAgent, AnthropicAgent, AntigravityAgent, ClaudeCodeAgent, CodexAgent, ForgeAgent, GeminiAgent, HermesAgent, KimiAgent, OpenAIAgent, OpenCodeAgent, PiAgent, VibeAgent, createHttpTool } from '@smithers-orchestrator/agents';
61
+ export { AmpAgent, AnthropicAgent, AntigravityAgent, ClaudeCodeAgent, CodexAgent, ForgeAgent, GeminiAgent, HermesAgent, HermesCliAgent, KimiAgent, OpenAIAgent, OpenCodeAgent, PiAgent, VibeAgent, createHttpTool } from '@smithers-orchestrator/agents';
62
62
  import * as _smithers_scorers from '@smithers-orchestrator/scorers';
63
63
  export { aggregateScores, createScorer, faithfulnessScorer, latencyScorer, llmJudge, relevancyScorer, runScorersAsync, runScorersBatch, schemaAdherenceScorer, smithersScorers, toxicityScorer } from '@smithers-orchestrator/scorers';
64
64
  import * as _smithers_agents_capability_registry from '@smithers-orchestrator/agents/capability-registry';
@@ -428,6 +428,7 @@ type SmithersMigrationResult = SmithersMigrationResult$1;
428
428
  type OpenAIAgentOptions<CALL_OPTIONS = never, TOOLS = ai.ToolSet> = _smithers_agents.OpenAIAgentOptions<CALL_OPTIONS, TOOLS>;
429
429
  type OpenSmithersBackendOptions = OpenSmithersBackendOptions$1;
430
430
  type HermesAgentOptions<CALL_OPTIONS = never, TOOLS = ai.ToolSet> = _smithers_agents.HermesAgentOptions<CALL_OPTIONS, TOOLS>;
431
+ type HermesCliAgentOptions = _smithers_agents.HermesCliAgentOptions;
431
432
  type HttpToolAuth = _smithers_agents.HttpToolAuth;
432
433
  type HttpToolInput = _smithers_agents.HttpToolInput;
433
434
  type HttpToolOutput = _smithers_agents.HttpToolOutput;
@@ -508,4 +509,4 @@ type XmlElement = _smithers_graph_XmlNode.XmlElement;
508
509
  type XmlNode = _smithers_graph_XmlNode.XmlNode;
509
510
  type XmlText = _smithers_graph_XmlNode.XmlText;
510
511
 
511
- export { type AgentCapabilityRegistry, type AgentLike, type AgentToolDescriptor, type AggregateOptions, type AggregateScore, type AnthropicAgentOptions, type ApprovalAutoApprove, type ApprovalDecision, type ApprovalMode, type ApprovalOption, type ApprovalProps, type ApprovalRanking, type ApprovalRequest, type ApprovalSelection, type ColumnDef, type ConnectRequest, type ContinueAsNewProps, type CreateHttpToolOptions, type CreateScorerConfig, type CreateSmithersApi, type CreateSmithersOptions, type DepsSpec, type EventFrame, type ExternalSmithersConfig, type GatewayAuthConfig, type GatewayDefaults, type GatewayOperatorUiConfig, type GatewayOptions, type GatewayRegisterOptions, type GatewayTokenGrant, type GatewayUiConfig, type GatewayWebhookConfig, type GatewayWebhookRunConfig, type GatewayWebhookSignalConfig, type GraphSnapshot, type HelloResponse, type HermesAgentOptions, type HostContainer, type HostNodeJson, type HttpToolAuth, type HttpToolInput, type HttpToolOutput, type InferDeps, type InferOutputEntry, type InferRow, type JjRevertResult, type KanbanProps, type KnownSmithersErrorCode, type LlmJudgeConfig, type MemoryFact, type MemoryLayerConfig, type MemoryMessage, type MemoryNamespace, type MemoryNamespaceKind, type MemoryProcessor, type MemoryProcessorConfig, type MemoryServiceApi, type MemoryStore, type MemoryThread, type MessageHistoryConfig, type MigrateSmithersStoreOptions, type OpenAIAgentOptions, type OpenApiAuth, type OpenApiSpec, type OpenApiToolsOptions, type OpenCodeAgentOptions, type OpenSmithersBackendOptions, type OutputAccessor, type OutputKey, type OutputTarget, type PiAgentOptions, type PiExtensionUiRequest, type PiExtensionUiResponse, type PollerProps, type RequestFrame, type ResolvedSmithersObservabilityOptions, type ResponseFrame, type RevertOptions, type RevertResult, type RunJjOptions, type RunJjResult, type RunOptions, type RunResult, type RunStatus, type SagaProps, type SagaStepDef, type SagaStepProps, type SamplingConfig, type SandboxProps, type SandboxRuntime, type SandboxVolumeMount, type SandboxWorkspaceSpec, type SchemaRegistryEntry, type ScoreResult, type ScoreRow, type Scorer, type ScorerBinding, type ScorerContext, type ScorerFn, type ScorerInput, type ScorersMap, type SemanticRecallConfig, type SerializedCtx, type ServeOptions, type ServerOptions, type SignalProps, type SmithersAlertLabels, type SmithersAlertPolicy, type SmithersAlertPolicyDefaults, type SmithersAlertPolicyRule, type SmithersAlertReaction, type SmithersAlertReactionKind, type SmithersAlertReactionRef, type SmithersAlertSeverity, type SmithersCtx, type SmithersError, type SmithersErrorCode, type SmithersEvent, type SmithersLogFormat, type SmithersMigrationResult, type SmithersObservabilityOptions, type SmithersObservabilityService, type SmithersWorkflow, type SmithersWorkflowOptions, type TaskDescriptor, type TaskMemoryConfig, type TaskProps, type TimeTravelOptions, type TimeTravelResult, type TimerProps, type TryCatchFinallyProps, type VibeAgentOptions, type WaitForEventProps, type WorkingMemoryConfig, type WorkspaceAddOptions, type WorkspaceInfo, type WorkspaceResult, type XmlElement, type XmlNode, type XmlText, bash, createExternalSmithers, createSmithers, createSmithersPostgres, defineTool, edit, getDefinedToolMetadata, grep, mdxPlugin, migrateSmithersStore, openSmithersBackend, read, tools, write };
512
+ export { type AgentCapabilityRegistry, type AgentLike, type AgentToolDescriptor, type AggregateOptions, type AggregateScore, type AnthropicAgentOptions, type ApprovalAutoApprove, type ApprovalDecision, type ApprovalMode, type ApprovalOption, type ApprovalProps, type ApprovalRanking, type ApprovalRequest, type ApprovalSelection, type ColumnDef, type ConnectRequest, type ContinueAsNewProps, type CreateHttpToolOptions, type CreateScorerConfig, type CreateSmithersApi, type CreateSmithersOptions, type DepsSpec, type EventFrame, type ExternalSmithersConfig, type GatewayAuthConfig, type GatewayDefaults, type GatewayOperatorUiConfig, type GatewayOptions, type GatewayRegisterOptions, type GatewayTokenGrant, type GatewayUiConfig, type GatewayWebhookConfig, type GatewayWebhookRunConfig, type GatewayWebhookSignalConfig, type GraphSnapshot, type HelloResponse, type HermesAgentOptions, type HermesCliAgentOptions, type HostContainer, type HostNodeJson, type HttpToolAuth, type HttpToolInput, type HttpToolOutput, type InferDeps, type InferOutputEntry, type InferRow, type JjRevertResult, type KanbanProps, type KnownSmithersErrorCode, type LlmJudgeConfig, type MemoryFact, type MemoryLayerConfig, type MemoryMessage, type MemoryNamespace, type MemoryNamespaceKind, type MemoryProcessor, type MemoryProcessorConfig, type MemoryServiceApi, type MemoryStore, type MemoryThread, type MessageHistoryConfig, type MigrateSmithersStoreOptions, type OpenAIAgentOptions, type OpenApiAuth, type OpenApiSpec, type OpenApiToolsOptions, type OpenCodeAgentOptions, type OpenSmithersBackendOptions, type OutputAccessor, type OutputKey, type OutputTarget, type PiAgentOptions, type PiExtensionUiRequest, type PiExtensionUiResponse, type PollerProps, type RequestFrame, type ResolvedSmithersObservabilityOptions, type ResponseFrame, type RevertOptions, type RevertResult, type RunJjOptions, type RunJjResult, type RunOptions, type RunResult, type RunStatus, type SagaProps, type SagaStepDef, type SagaStepProps, type SamplingConfig, type SandboxProps, type SandboxRuntime, type SandboxVolumeMount, type SandboxWorkspaceSpec, type SchemaRegistryEntry, type ScoreResult, type ScoreRow, type Scorer, type ScorerBinding, type ScorerContext, type ScorerFn, type ScorerInput, type ScorersMap, type SemanticRecallConfig, type SerializedCtx, type ServeOptions, type ServerOptions, type SignalProps, type SmithersAlertLabels, type SmithersAlertPolicy, type SmithersAlertPolicyDefaults, type SmithersAlertPolicyRule, type SmithersAlertReaction, type SmithersAlertReactionKind, type SmithersAlertReactionRef, type SmithersAlertSeverity, type SmithersCtx, type SmithersError, type SmithersErrorCode, type SmithersEvent, type SmithersLogFormat, type SmithersMigrationResult, type SmithersObservabilityOptions, type SmithersObservabilityService, type SmithersWorkflow, type SmithersWorkflowOptions, type TaskDescriptor, type TaskMemoryConfig, type TaskProps, type TimeTravelOptions, type TimeTravelResult, type TimerProps, type TryCatchFinallyProps, type VibeAgentOptions, type WaitForEventProps, type WorkingMemoryConfig, type WorkspaceAddOptions, type WorkspaceInfo, type WorkspaceResult, type XmlElement, type XmlNode, type XmlText, bash, createExternalSmithers, createSmithers, createSmithersPostgres, defineTool, edit, getDefinedToolMetadata, grep, mdxPlugin, migrateSmithersStore, openSmithersBackend, read, tools, write };
package/src/index.js CHANGED
@@ -83,6 +83,7 @@
83
83
  * @template [TOOLS=import("ai").ToolSet]
84
84
  * @typedef {import("@smithers-orchestrator/agents").HermesAgentOptions<CALL_OPTIONS, TOOLS>} HermesAgentOptions
85
85
  */
86
+ /** @typedef {import("@smithers-orchestrator/agents").HermesCliAgentOptions} HermesCliAgentOptions */
86
87
  /** @typedef {import("@smithers-orchestrator/openapi").OpenApiAuth} OpenApiAuth */
87
88
  /** @typedef {import("@smithers-orchestrator/openapi").OpenApiSpec} OpenApiSpec */
88
89
  /** @typedef {import("@smithers-orchestrator/openapi").OpenApiToolsOptions} OpenApiToolsOptions */
@@ -182,7 +183,7 @@ export { knownSmithersErrorCodes } from "@smithers-orchestrator/errors/knownSmit
182
183
  // Components
183
184
  export { Approval, ApprovalGate, Aspects, Branch, CheckSuite, ClassifyAndRoute, ContentPipeline, ContinueAsNew, Debate, DecisionTable, DriftDetector, EscalationChain, GatherAndSynthesize, HumanTask, Kanban, Loop, MergeQueue, Optimizer, Panel, Parallel, Poller, Ralph, ReviewLoop, Runbook, Saga, SagaStep, Sandbox, ScanFixVerify, Sequence, Sidecar, Signal, Subflow, SuperSmithers, Supervisor, Task, Timer, TryCatchFinally, WaitForEvent, Workflow, Worktree, approvalDecisionSchema, approvalRankingSchema, approvalSelectionSchema, computeSidecarDelta, continueAsNew, } from "@smithers-orchestrator/components";
184
185
  // Agents
185
- export { AnthropicAgent, OpenAIAgent, HermesAgent, AmpAgent, AntigravityAgent, ClaudeCodeAgent, CodexAgent, GeminiAgent, PiAgent, KimiAgent, ForgeAgent, VibeAgent, OpenCodeAgent, createHttpTool, } from "@smithers-orchestrator/agents";
186
+ export { AnthropicAgent, OpenAIAgent, HermesAgent, HermesCliAgent, AmpAgent, AntigravityAgent, ClaudeCodeAgent, CodexAgent, GeminiAgent, PiAgent, KimiAgent, ForgeAgent, VibeAgent, OpenCodeAgent, createHttpTool, } from "@smithers-orchestrator/agents";
186
187
  // VCS
187
188
  export { runJj, getJjPointer, revertToJjPointer, isJjRepo, workspaceAdd, workspaceList, workspaceClose, } from "@smithers-orchestrator/vcs/jj";
188
189
  // Core API
@@ -153,6 +153,10 @@ function readMigratedMarker(workspaceRoot) {
153
153
  return {
154
154
  exists: true,
155
155
  backend: normalizeBackend(parsed?.target?.backend ?? parsed?.target ?? parsed?.backend, markerPath),
156
+ // The migration SOURCE backend, recorded by `migrate` for every
157
+ // direction. A reverse (target sqlite) receipt uses it to tolerate the
158
+ // kept source store (pglite/postgres) without hiding an unrelated one.
159
+ sourceBackend: normalizeBackend(parsed?.source?.backend ?? (typeof parsed?.source === "string" ? parsed.source : undefined), markerPath),
156
160
  };
157
161
  }
158
162
  catch {
@@ -376,14 +380,32 @@ export async function resolveSmithersBackendChoice(opts = {}) {
376
380
  // otherwise an explicit pglite/postgres open beside a populated SQLite store
377
381
  // would hide the SQLite history.
378
382
  const marker = migratedMarker.exists && (migratedMarker.backend === "pglite" || migratedMarker.backend === "postgres");
383
+ // A REVERSE migration receipt (target sqlite) is authoritative the same way a
384
+ // forward one is — but the only leftover store it authorizes keeping is the
385
+ // recorded migration SOURCE (pglite/postgres). It must NOT silently hide an
386
+ // unrelated populated store, so it requires a recorded source backend (a bare
387
+ // or sourceless receipt does not suppress) and resolves only when we actually
388
+ // land on sqlite. Symmetric to the forward path's sqlite-source tolerance.
389
+ const reverseMarker = migratedMarker.exists
390
+ && migratedMarker.backend === "sqlite"
391
+ && backend === "sqlite"
392
+ && (migratedMarker.sourceBackend === "pglite" || migratedMarker.sourceBackend === "postgres");
379
393
  const populated = [
380
394
  ...(sqliteStore.runCount > 0 ? [{ backend: /** @type {"sqlite"} */ ("sqlite"), location: sqliteStore.dbPath, runCount: sqliteStore.runCount, schemaVersion: sqliteStore.schemaVersion }] : []),
381
395
  ...(pgliteStore.runCount > 0 ? [{ backend: /** @type {"pglite"} */ ("pglite"), location: pgliteStore.dataDir, runCount: pgliteStore.runCount, schemaVersion: pgliteStore.schemaVersion }] : []),
382
396
  ...(postgresStore.runCount > 0 ? [{ backend: /** @type {"postgres"} */ ("postgres"), location: postgresStore.connectionString === "set" ? "postgres connection" : "postgres", runCount: postgresStore.runCount, schemaVersion: postgresStore.schemaVersion }] : []),
383
397
  ];
384
- if (!marker && populated.length > 1) {
398
+ if (!marker && !reverseMarker && populated.length > 1) {
385
399
  throw backendConflictError({ populated });
386
400
  }
401
+ if (reverseMarker) {
402
+ // Tolerate sqlite (the migration target) and the recorded source only;
403
+ // any other populated store would be hidden, so refuse to choose.
404
+ const unexpectedPopulated = populated.filter((store) => store.backend !== "sqlite" && store.backend !== migratedMarker.sourceBackend);
405
+ if (unexpectedPopulated.length > 0) {
406
+ throw backendConflictError({ populated });
407
+ }
408
+ }
387
409
  const migratedTargetBackend = marker && (migratedMarker.backend ?? markerBackend) !== "sqlite"
388
410
  ? /** @type {"pglite" | "postgres" | undefined} */ (migratedMarker.backend ?? markerBackend)
389
411
  : undefined;
@@ -452,6 +474,6 @@ export async function resolveSmithersBackendChoice(opts = {}) {
452
474
  sqlite: sqliteStore,
453
475
  pglite: pgliteStore,
454
476
  postgres: postgresStore,
455
- migratedMarker: marker,
477
+ migratedMarker: marker || reverseMarker,
456
478
  };
457
479
  }