@yss123/cage-ai 0.0.0-stage → 0.3.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 (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +77 -2
  3. package/dist/budget.d.ts +64 -0
  4. package/dist/budget.js +54 -0
  5. package/dist/budget.js.map +1 -0
  6. package/dist/context-read.d.ts +38 -0
  7. package/dist/context-read.js +124 -0
  8. package/dist/context-read.js.map +1 -0
  9. package/dist/context-schema.d.ts +9 -0
  10. package/dist/context-schema.js +16 -0
  11. package/dist/context-schema.js.map +1 -0
  12. package/dist/context.d.ts +27 -0
  13. package/dist/context.js +83 -0
  14. package/dist/context.js.map +1 -0
  15. package/dist/execution-schema.d.ts +9 -0
  16. package/dist/execution-schema.js +20 -0
  17. package/dist/execution-schema.js.map +1 -0
  18. package/dist/history.d.ts +43 -0
  19. package/dist/history.js +139 -0
  20. package/dist/history.js.map +1 -0
  21. package/dist/http.d.ts +15 -0
  22. package/dist/http.js +197 -0
  23. package/dist/http.js.map +1 -0
  24. package/dist/index.d.ts +33 -0
  25. package/dist/index.js +97 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/model-failure.d.ts +66 -0
  28. package/dist/model-failure.js +85 -0
  29. package/dist/model-failure.js.map +1 -0
  30. package/dist/model.d.ts +50 -0
  31. package/dist/model.js +93 -0
  32. package/dist/model.js.map +1 -0
  33. package/dist/models.d.ts +75 -0
  34. package/dist/models.js +241 -0
  35. package/dist/models.js.map +1 -0
  36. package/dist/personalities.d.ts +87 -0
  37. package/dist/personalities.js +191 -0
  38. package/dist/personalities.js.map +1 -0
  39. package/dist/personality-presets.d.ts +14 -0
  40. package/dist/personality-presets.js +24 -0
  41. package/dist/personality-presets.js.map +1 -0
  42. package/dist/prompt.d.ts +67 -0
  43. package/dist/prompt.js +148 -0
  44. package/dist/prompt.js.map +1 -0
  45. package/dist/query.d.ts +13 -0
  46. package/dist/query.js +82 -0
  47. package/dist/query.js.map +1 -0
  48. package/dist/request-plan.d.ts +59 -0
  49. package/dist/request-plan.js +168 -0
  50. package/dist/request-plan.js.map +1 -0
  51. package/dist/responses.d.ts +29 -0
  52. package/dist/responses.js +134 -0
  53. package/dist/responses.js.map +1 -0
  54. package/dist/runtime.d.ts +172 -0
  55. package/dist/runtime.js +1188 -0
  56. package/dist/runtime.js.map +1 -0
  57. package/dist/schema.d.ts +11 -0
  58. package/dist/schema.js +51 -0
  59. package/dist/schema.js.map +1 -0
  60. package/dist/security.d.ts +23 -0
  61. package/dist/security.js +73 -0
  62. package/dist/security.js.map +1 -0
  63. package/dist/state.d.ts +238 -0
  64. package/dist/state.js +11 -0
  65. package/dist/state.js.map +1 -0
  66. package/dist/store.d.ts +113 -0
  67. package/dist/store.js +456 -0
  68. package/dist/store.js.map +1 -0
  69. package/dist/text-stream.d.ts +62 -0
  70. package/dist/text-stream.js +99 -0
  71. package/dist/text-stream.js.map +1 -0
  72. package/dist/tool-catalog.d.ts +23 -0
  73. package/dist/tool-catalog.js +53 -0
  74. package/dist/tool-catalog.js.map +1 -0
  75. package/dist/tools.d.ts +54 -0
  76. package/dist/tools.js +250 -0
  77. package/dist/tools.js.map +1 -0
  78. package/dist/types.d.ts +283 -0
  79. package/dist/types.js +16 -0
  80. package/dist/types.js.map +1 -0
  81. package/package.json +41 -3
@@ -0,0 +1,172 @@
1
+ import { type Ctx, type Kernel, type RuntimeService } from '@yss123/cage-kernel';
2
+ import { type RuntimeOntology } from '@yss123/cage-ontology';
3
+ import { type AiPersonalityPreview } from '@yss123/cage-ai-protocol';
4
+ import { AiStore } from './store.js';
5
+ import { type AiOptions } from './types.js';
6
+ import { ModelManager } from './models.js';
7
+ /** context → model → actions → observation 的可恢复状态机。数据库是状态源,进程只持有带期限的租约。 */
8
+ /**
9
+ * 持久化 AI 运行服务,继承用户会话存储并接入 HTTP、OpenAPI 和 worker 生命周期。
10
+ * 以租约行锁保护状态推进,以动作回执保护业务写恢复;模型调用失败时保守计入未知用量,工具读取可能重试,已成功相同写意图优先复用回执。
11
+ */
12
+ export declare class AiRuntime extends AiStore implements RuntimeService {
13
+ /**
14
+ * 与当前注册表指纹一致的运行时本体,用于工具发现和上下文说明。
15
+ */
16
+ readonly ontology: RuntimeOntology;
17
+ /**
18
+ * 租户动态模型管理入口,与静态模型 provider 共存。
19
+ */
20
+ readonly models: ModelManager;
21
+ /**
22
+ * 整个 runtime 的关闭信号,传播到模型调用和执行循环。
23
+ */
24
+ private stopping;
25
+ /**
26
+ * 当前进程实际执行中的运行 Promise 集合,用于并发限制和关闭等待。
27
+ */
28
+ private active;
29
+ /**
30
+ * 正在处理的一次 worker tick,用于合并重入调用。
31
+ */
32
+ private tickPromise;
33
+ /**
34
+ * 正在试聊的租户/用户组合,限制单用户和本进程并发,不是跨进程全局配额。
35
+ */
36
+ private previewing;
37
+ /**
38
+ * 构建运行时本体与注册表指纹,绑定 managed provider 并收集可管理模型别名。
39
+ * 外部提供的本体指纹必须与当前注册表一致,否则启动失败;构造不调用模型或执行任务。
40
+ */
41
+ constructor(kernel: Kernel, options: AiOptions);
42
+ /**
43
+ * 用零行查询确认运行、模型、性格及后续状态字段迁移已经可读。
44
+ * 只检查数据库结构依赖,不代表外部模型连通、业务授权或实际 AI 流程已验证。
45
+ */
46
+ ready(): Promise<void>;
47
+ /**
48
+ * 发出进程停止信号并等待当前活跃执行结束;执行循环尝试释放租约并重新排队,不能撤销先前已提交的领域命令。
49
+ */
50
+ close(): Promise<void>;
51
+ /**
52
+ * 把固定 AI HTTP 接口挂载到宿主服务;认证、SSE 和归属边界由 mountHttp 与存储层共同执行。
53
+ */
54
+ http(app: any): void;
55
+ /**
56
+ * 返回 AI 固定接口的 OpenAPI 路径片段,供宿主统一合并,不在此注册路由。
57
+ */
58
+ openapi(): Record<string, Record<string, unknown>>;
59
+ /** 性格试聊只请求一次模型,不提供业务工具、页面、记忆或用户历史。草稿无需先保存。 */
60
+ /**
61
+ * 在性格管理授权下对未保存草稿进行一次纯文本试聊。
62
+ * 每个用户同时最多一次、当前 runtime 最多四次;20 秒中止、最多 600 输出 Token,不提供工具、页面、偏好或会话历史。
63
+ * 开始前记录管理操作审计,拒绝任何工具调用结果,finally 等待流清理并释放并发名额;不创建正式助理运行。
64
+ */
65
+ previewPersonality(ctx: Ctx, raw: unknown, onText?: (text: string) => Promise<void>, signal?: AbortSignal): Promise<AiPersonalityPreview>;
66
+ /**
67
+ * 在调用方事务中锁定运行行,检查 token、running 状态、取消标记和未到期租约。
68
+ * 返回锁下最新快照供变更使用;任何不满足均抛 LostLease,避免旧内存快照授权迟到提交。
69
+ */
70
+ private guard;
71
+ /**
72
+ * 为一次运行状态变更打开事务并先执行 guard,再把锁下最新状态传给回调。
73
+ * 状态、动作和事件可由回调原子提交;不应把外部模型网络请求放在这个事务内。
74
+ */
75
+ private change;
76
+ /**
77
+ * 内部读取完整运行行供执行循环恢复阶段;不执行用户归属授权。
78
+ * 公开访问必须走 ownedRun,内部使用后在执行前调用 identity 并在写入前 guard。
79
+ */
80
+ private readRun;
81
+ /** 与审批步骤关联一次;旧轮次取消后不会被再次领取。 */
82
+ /**
83
+ * 领取最多 20 个仍运行实例中的未绑定 AI 步骤,以行锁和 skipLocked 避免多 worker 重复建运行。
84
+ * 创建审批 run、绑定 step.run_id、切换步骤状态及首个事件同事务完成;只处理 queued 且未关联的步骤。
85
+ */
86
+ private enqueueApprovals;
87
+ /**
88
+ * 按创建顺序领取 queued 或租约已过期的 running 任务。
89
+ * 同会话较早非终态运行阻止后续轮次,保证用户上下文顺序;skipLocked 避免争抢阻塞。
90
+ * 生成新租约 token,保留已有执行 deadline 或首次按 timeoutMs 创建,并同事务写 running 事件;没有可领取任务返回 null。
91
+ */
92
+ private claim;
93
+ /**
94
+ * 合并同一 runtime 上重叠的 worker tick 调用,返回同一工作 Promise。
95
+ * 停止后返回 0;本轮完成才清空缓存,避免并发扫描导致超过当前进程并发名额。
96
+ */
97
+ tick(signal?: AbortSignal): Promise<number>;
98
+ /**
99
+ * 先入队 AI 审批并终结委托已过期的等待互动,再按 maxConcurrentRuns(默认 2)补充执行任务。
100
+ * 等待用户不占活跃槽位;有空槽时短间隔补位,满槽只等待任务完成。结束前等活跃任务退出,返回本轮入队/领取计数。
101
+ */
102
+ private work;
103
+ /**
104
+ * 重新构建运行身份并核对注册表、委托及当前授权指纹。
105
+ * 权限或声明变化立即拒绝继续执行,旧快照不能作为持续权限许可。
106
+ */
107
+ private identity;
108
+ /**
109
+ * 核对审批实例仍运行、当前步骤编号、步骤状态和 run_id 绑定。
110
+ * 撤回、重提或步骤推进后旧 AI 运行不得继续审查或提交结论;返回当前业务对象定位及版本。
111
+ */
112
+ private approvalActive;
113
+ /**
114
+ * 解析运行使用的模型别名;动态 provider 每个模型步进读取当前租户配置。
115
+ * 缺少声明直接失败,不静默使用其他模型或全局租户配置。
116
+ */
117
+ private provider;
118
+ /**
119
+ * 为审批重新读取指定对象并核对审批启动版本,仅投影策略允许字段;为助理重新读取页面事实、本人偏好和预算内近期历史。
120
+ * 追加本轮任务,记录 history_start 与远端状态/省略信息,在租约事务中保存上下文并进入 model 阶段;原始页面文字不自动成为可信事实。
121
+ */
122
+ private prepareContext;
123
+ /**
124
+ * 以单个 provider 快照规划输入、完整工具和输出预算,先持久化尝试次数及 Token 预留再外呼。
125
+ * 文本通过 TextStream 在租约保护下落事件;有效结果按厂商用量或预留估算结算,保存历史、远端项和待执行调用,助理无工具时才完成。
126
+ * 远端历史失效且可安全恢复时清空接续状态重建本地请求;其他不确定失败保守结算预留。审批必须提交 decision,超出累计或工具预算不进入动作阶段。
127
+ */
128
+ private model;
129
+ /**
130
+ * 在租约行锁下读取当前模型预留并一次性计入估算 Token,随后清空预留、写 model.failed。
131
+ * 网络断线或 worker 恢复无法证明厂商没有计费,因此不按零消耗处理;已清空时直接返回,避免重复结算。
132
+ */
133
+ private settleUncertain;
134
+ /**
135
+ * 以模型步号与 call ID 建立唯一动作记录,校验输入摘要并复用已完成回执。
136
+ * 发现/加载把实际 keys 与回执一起保存;交互暂停并释放租约,页面回复重新安全读取;写工具默认确认,偏好写始终确认,同运行相同成功写意图即使换 call ID 也复用。
137
+ * 实际写入前重建身份,领域命令与动作成功回执、事件同事务提交;审批裁决要求引用已提供证据,并与流程结论和运行终态共同提交。读取动作可在回执保存前重试。
138
+ */
139
+ private action;
140
+ /**
141
+ * 持久化待确认、补充输入或页面更新互动,并切换等待状态、释放执行租约。
142
+ * 互动到期时间沿用委托期限,事件与状态同事务;等待期间不占 worker 执行槽位,回复由存储层重新排队。
143
+ */
144
+ private wait;
145
+ /**
146
+ * 在租约事务中保存动作成功/失败结果、可选工具选择和 tool.completed 事件,然后独立追加观察。
147
+ * 如果提交回执后进程退出,恢复会复用回执并继续 observe,不重复业务写;undefined 结果以 null 持久化。
148
+ */
149
+ private receipt;
150
+ /**
151
+ * 把可交给模型修正或解释的 CageError 保存为失败回执,只对 INVALID_INPUT 保留 detail。
152
+ * LostLease、非 Cage 异常、UNAUTHENTICATED 和 INTERNAL 继续上抛终结或中止执行;FORBIDDEN 等其他 Cage 错误成为观察,不因此授予重试绕过权限。
153
+ */
154
+ private actionError;
155
+ /**
156
+ * 把动作结果追加为匹配 call ID 的工具消息,移除队首 pending 并递增工具调用数。
157
+ * 用户补充输入完整保留,较大证据缩为带动作引用的预览;使用锁下当前历史避免覆盖前一次状态,剩余调用继续 actions,否则回到 model。
158
+ */
159
+ private observe;
160
+ /**
161
+ * 持有一轮领取租约运行状态机,每 5 秒单次续租,组合外部停止、进程关闭、期限和失去租约信号。
162
+ * 每步重新读取持久状态、处理遗留模型预留并核验身份/审批有效性;最近三次相同输入摘要触发无进展失败。
163
+ * 失去租约退出;主动停机尝试重新排队,其他失败进入 fail;finally 清除续租定时器并等待在途续租结束。
164
+ */
165
+ private execute;
166
+ /**
167
+ * 将执行异常收敛为稳定代码,并在租约事务内终结运行。
168
+ * 审批按 onFailure 决定系统转人工或标记失败,不能伪造模型通过/退回;人工接管不可用时仍标记失败,避免旧任务反复领取。
169
+ * 租约已转移时不覆盖新执行者;原始上游错误正文不会成为公开运行错误。
170
+ */
171
+ private fail;
172
+ }