@isaacthoman/pulpo 0.109.0 → 0.110.1

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 (2) hide show
  1. package/dist/index.js +125 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -16631,6 +16631,19 @@ var compactionItemSchema = external_exports.object({
16631
16631
  covered_through_response_id: idSchema.optional(),
16632
16632
  before_agent_turn: external_exports.number().int().positive().optional()
16633
16633
  });
16634
+ var recallSourceSchema = external_exports.object({
16635
+ chat_id: idSchema,
16636
+ response_id: idSchema,
16637
+ title: external_exports.string(),
16638
+ updated_at: isoDateSchema,
16639
+ excerpt: external_exports.string()
16640
+ });
16641
+ var recallItemSchema = external_exports.object({
16642
+ id: external_exports.string().min(1),
16643
+ type: external_exports.literal("pulpo_recall"),
16644
+ status: external_exports.literal("completed"),
16645
+ sources: external_exports.array(recallSourceSchema).max(5)
16646
+ });
16634
16647
  var responseSnapshotSchema = external_exports.object({
16635
16648
  responseId: idSchema,
16636
16649
  status: responseStatusSchema,
@@ -16727,6 +16740,9 @@ function upsertOutputItem(output, match, value) {
16727
16740
  }
16728
16741
  function applyAgentEventOutput(output, event) {
16729
16742
  const payload = event.payload;
16743
+ if (event.type === "pulpo.recall.completed" && typeof payload.id === "string") {
16744
+ return upsertOutputItem(output, (item) => item.type === "pulpo_recall" && item.id === payload.id, payload);
16745
+ }
16730
16746
  if (event.type.startsWith("pulpo.agent.workspace.")) {
16731
16747
  return upsertOutputItem(output, (item) => item.type === "pulpo_workspace", payload);
16732
16748
  }
@@ -17035,6 +17051,113 @@ var agentSettingsSchema = external_exports.object({
17035
17051
  billWorkspaces: external_exports.boolean().default(false),
17036
17052
  workspacePricePerMinuteMicros: external_exports.number().int().min(0).max(1e9).default(1e4)
17037
17053
  });
17054
+ var episodicMemoryProfileSchema = external_exports.enum(["embeddinggemma", "qwen3-embedding"]);
17055
+ var episodicMemoryRecallModeSchema = external_exports.enum(["conservative", "balanced", "eager"]);
17056
+ var episodicMemorySettingsSchema = external_exports.object({
17057
+ enabled: external_exports.boolean().default(false),
17058
+ profile: episodicMemoryProfileSchema.default("embeddinggemma"),
17059
+ recallMode: episodicMemoryRecallModeSchema.default("balanced")
17060
+ });
17061
+ var episodicMemoryModelProfileSchema = external_exports.object({
17062
+ id: episodicMemoryProfileSchema,
17063
+ label: external_exports.string(),
17064
+ model: external_exports.string(),
17065
+ dimension: external_exports.number().int().positive(),
17066
+ approximateSizeBytes: external_exports.number().int().positive()
17067
+ });
17068
+ var episodicMemoryGenerationSchema = external_exports.object({
17069
+ id: idSchema,
17070
+ profile: episodicMemoryProfileSchema,
17071
+ model: external_exports.string(),
17072
+ modelDigest: external_exports.string().nullable(),
17073
+ dimension: external_exports.number().int().positive(),
17074
+ status: external_exports.enum(["pending", "pulling", "indexing", "ready", "failed", "cancelled"]),
17075
+ totalItems: external_exports.number().int().nonnegative(),
17076
+ completedItems: external_exports.number().int().nonnegative(),
17077
+ failedItems: external_exports.number().int().nonnegative(),
17078
+ error: external_exports.string().nullable(),
17079
+ active: external_exports.boolean(),
17080
+ downloadTotalBytes: external_exports.number().nonnegative(),
17081
+ downloadCompletedBytes: external_exports.number().nonnegative(),
17082
+ createdAt: external_exports.string(),
17083
+ updatedAt: external_exports.string()
17084
+ });
17085
+ var episodicMemoryStatisticsRangeSchema = external_exports.enum(["24h", "7d", "30d"]);
17086
+ var episodicMemoryLatencySchema = external_exports.object({
17087
+ averageMs: external_exports.number().nonnegative(),
17088
+ p50Ms: external_exports.number().nonnegative(),
17089
+ p95Ms: external_exports.number().nonnegative()
17090
+ });
17091
+ var episodicMemoryOperationStatisticsSchema = external_exports.object({
17092
+ events: external_exports.number().int().nonnegative(),
17093
+ errors: external_exports.number().int().nonnegative(),
17094
+ errorRate: external_exports.number().min(0).max(1),
17095
+ items: external_exports.number().int().nonnegative(),
17096
+ latency: episodicMemoryLatencySchema
17097
+ });
17098
+ var episodicMemoryStatisticsSchema = external_exports.object({
17099
+ range: episodicMemoryStatisticsRangeSchema,
17100
+ from: external_exports.string(),
17101
+ to: external_exports.string(),
17102
+ current: external_exports.object({
17103
+ indexedChats: external_exports.number().int().nonnegative(),
17104
+ indexedChunks: external_exports.number().int().nonnegative(),
17105
+ indexedFacts: external_exports.number().int().nonnegative(),
17106
+ indexedUsers: external_exports.number().int().nonnegative(),
17107
+ pendingItems: external_exports.number().int().nonnegative(),
17108
+ failedItems: external_exports.number().int().nonnegative(),
17109
+ coverage: external_exports.number().min(0).max(1),
17110
+ storageBytes: external_exports.number().nonnegative(),
17111
+ lastIndexedAt: external_exports.string().nullable(),
17112
+ queue: external_exports.object({
17113
+ available: external_exports.boolean(),
17114
+ pending: external_exports.number().int().nonnegative(),
17115
+ active: external_exports.number().int().nonnegative(),
17116
+ failed: external_exports.number().int().nonnegative(),
17117
+ oldestJobAgeMs: external_exports.number().nonnegative()
17118
+ })
17119
+ }),
17120
+ summary: external_exports.object({
17121
+ recall: episodicMemoryOperationStatisticsSchema.extend({
17122
+ recalled: external_exports.number().int().nonnegative(),
17123
+ abstained: external_exports.number().int().nonnegative(),
17124
+ recallRate: external_exports.number().min(0).max(1),
17125
+ abstentionRate: external_exports.number().min(0).max(1)
17126
+ }),
17127
+ retrieval: episodicMemoryOperationStatisticsSchema.extend({
17128
+ fallbacks: external_exports.number().int().nonnegative(),
17129
+ fallbackRate: external_exports.number().min(0).max(1)
17130
+ }),
17131
+ databaseSearch: episodicMemoryOperationStatisticsSchema,
17132
+ embedding: episodicMemoryOperationStatisticsSchema,
17133
+ indexing: episodicMemoryOperationStatisticsSchema.extend({
17134
+ itemsPerHour: external_exports.number().nonnegative()
17135
+ }),
17136
+ agentSearch: episodicMemoryOperationStatisticsSchema,
17137
+ agentRead: episodicMemoryOperationStatisticsSchema,
17138
+ totalErrorRate: external_exports.number().min(0).max(1)
17139
+ }),
17140
+ series: external_exports.array(external_exports.object({
17141
+ bucketStart: external_exports.string(),
17142
+ recallRequests: external_exports.number().int().nonnegative(),
17143
+ recalled: external_exports.number().int().nonnegative(),
17144
+ errors: external_exports.number().int().nonnegative(),
17145
+ p95RecallLatencyMs: external_exports.number().nonnegative()
17146
+ }))
17147
+ });
17148
+ var episodicMemoryAdminStatusSchema = external_exports.object({
17149
+ settings: episodicMemorySettingsSchema,
17150
+ profiles: external_exports.array(episodicMemoryModelProfileSchema),
17151
+ ollama: external_exports.object({
17152
+ healthy: external_exports.boolean(),
17153
+ version: external_exports.string().nullable(),
17154
+ error: external_exports.string().nullable(),
17155
+ installedModels: external_exports.array(external_exports.object({ name: external_exports.string(), digest: external_exports.string(), size: external_exports.number().nonnegative() }))
17156
+ }),
17157
+ activeGeneration: episodicMemoryGenerationSchema.nullable(),
17158
+ buildingGeneration: episodicMemoryGenerationSchema.nullable(),
17159
+ statistics: episodicMemoryStatisticsSchema
17160
+ });
17038
17161
  var webToolProviderSchema = external_exports.enum(["kagi", "firecrawl"]);
17039
17162
  var webToolProviderOrderSchema = external_exports.array(webToolProviderSchema).length(2).refine((value) => new Set(value).size === 2, "Provider order must contain Kagi and Firecrawl exactly once");
17040
17163
  var kagiWebProviderSettingsSchema = external_exports.object({
@@ -17263,6 +17386,7 @@ var managementInstanceSettingsSchema = external_exports.object({
17263
17386
  personalization: personalizationSettingsSchema.default(() => personalizationSettingsSchema.parse({})),
17264
17387
  ocr: instanceOcrSettingsSchema.default(() => instanceOcrSettingsSchema.parse({})),
17265
17388
  agent: agentSettingsSchema.default(() => agentSettingsSchema.parse({})),
17389
+ episodicMemory: episodicMemorySettingsSchema.default(() => episodicMemorySettingsSchema.parse({})),
17266
17390
  webTools: managementWebToolsSettingsSchema.default(() => managementWebToolsSettingsSchema.parse({})),
17267
17391
  logging: loggingSettingsSchema.default(() => loggingSettingsSchema.parse({}))
17268
17392
  });
@@ -18095,7 +18219,7 @@ async function runModelTest(input) {
18095
18219
  }
18096
18220
 
18097
18221
  // src/index.ts
18098
- var CLI_VERSION = true ? "0.109.0" : "0.1.0";
18222
+ var CLI_VERSION = true ? "0.110.1" : "0.1.0";
18099
18223
  var CLI_BUNDLED = true;
18100
18224
  var commandIo = /* @__PURE__ */ new WeakMap();
18101
18225
  var commandClientFactory = /* @__PURE__ */ new WeakMap();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isaacthoman/pulpo",
3
- "version": "0.109.0",
3
+ "version": "0.110.1",
4
4
  "description": "Operator-first command-line client for Pulpo",
5
5
  "type": "module",
6
6
  "bin": {