@jangts/agent-core 0.1.1 → 0.2.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 (558) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/LICENSE +55 -0
  3. package/NOTICE +6 -0
  4. package/README.md +8 -0
  5. package/development/docs/README.en.md +70 -0
  6. package/development/docs/README.md +1 -1
  7. package/development/docs/acceptance.en.md +34 -0
  8. package/development/docs/agent-development.en.md +42 -0
  9. package/development/docs/api/README.en.md +62 -0
  10. package/development/docs/api/advanced-agents.en.md +135 -0
  11. package/development/docs/api/context-processing.en.md +110 -0
  12. package/development/docs/api/core.en.md +274 -0
  13. package/development/docs/api/examples.en.md +118 -0
  14. package/development/docs/api/kits.en.md +183 -0
  15. package/development/docs/api/knowledge-answering.en.md +166 -0
  16. package/development/docs/api/mock.en.md +186 -0
  17. package/development/docs/api/observability.en.md +166 -0
  18. package/development/docs/api/reference.en.md +2235 -0
  19. package/development/docs/api/reference.md +1907 -1874
  20. package/development/docs/api/support.en.md +252 -0
  21. package/development/docs/api/support.md +27 -0
  22. package/development/docs/api/types.en.md +181 -0
  23. package/development/docs/api/workflow.en.md +188 -0
  24. package/development/docs/basic-usage.en.md +78 -0
  25. package/development/docs/create-app.en.md +76 -0
  26. package/development/docs/examples/offline-agent.en.md +273 -0
  27. package/development/docs/examples.en.md +36 -0
  28. package/development/docs/flows/knowledge-maintenance.en.md +38 -0
  29. package/development/docs/getting-started.en.md +71 -0
  30. package/development/docs/knowledge.en.md +89 -0
  31. package/development/docs/maintenance.en.md +62 -0
  32. package/development/docs/materials.en.md +38 -0
  33. package/development/docs/mechanisms.en.md +227 -0
  34. package/development/docs/memory-and-learning.en.md +42 -0
  35. package/development/docs/operations.en.md +51 -0
  36. package/development/docs/records.en.md +63 -0
  37. package/development/docs/registration.en.md +63 -0
  38. package/development/skills/agent-core-app/scripts/create-app.mjs +286 -70
  39. package/development/skills/agent-core-app/scripts/lib/knowledge.mjs +77 -16
  40. package/development/skills/agent-core-app/scripts/lib/source.mjs +30 -2
  41. package/development/skills/agent-core-app/scripts/plan.mjs +46 -12
  42. package/development/skills/agent-core-app/scripts/prepare-source.mjs +61 -10
  43. package/development/skills/agent-core-app/scripts/resources.mjs +62 -17
  44. package/development/skills/agent-core-app/scripts/validate-knowledge.mjs +18 -1
  45. package/development/skills/agent-core-app/templates/catalog.json +36 -22
  46. package/dist/cjs/capabilities/index.js +13 -0
  47. package/dist/cjs/capabilities/invocation.js +80 -10
  48. package/dist/cjs/capabilities/model.js +126 -13
  49. package/dist/cjs/capabilities/tool-runtime.js +64 -12
  50. package/dist/cjs/capabilities/tools.js +266 -31
  51. package/dist/cjs/context/assembly.js +46 -5
  52. package/dist/cjs/context/audit.js +31 -6
  53. package/dist/cjs/context/fragments.js +54 -11
  54. package/dist/cjs/context/index.js +12 -0
  55. package/dist/cjs/context/journal.js +84 -7
  56. package/dist/cjs/context/plan.js +30 -2
  57. package/dist/cjs/diagnostics/catalog.js +17 -3
  58. package/dist/cjs/diagnostics/index.js +149 -29
  59. package/dist/cjs/diagnostics/sub-flow.js +240 -40
  60. package/dist/cjs/errors.js +99 -17
  61. package/dist/cjs/execution/branch.js +20 -4
  62. package/dist/cjs/execution/engine.js +470 -56
  63. package/dist/cjs/execution/events.js +136 -18
  64. package/dist/cjs/execution/index.js +7 -0
  65. package/dist/cjs/execution/reporting.js +75 -6
  66. package/dist/cjs/execution/state.js +161 -22
  67. package/dist/cjs/execution/workflow.js +224 -32
  68. package/dist/cjs/index.js +18 -0
  69. package/dist/cjs/kits/aggregation.js +45 -3
  70. package/dist/cjs/kits/answering/batch.js +23 -4
  71. package/dist/cjs/kits/answering/check-result.js +31 -8
  72. package/dist/cjs/kits/answering/checks.js +24 -3
  73. package/dist/cjs/kits/answering/flow.js +192 -36
  74. package/dist/cjs/kits/answering/index.js +19 -1
  75. package/dist/cjs/kits/answering/tasks.js +88 -13
  76. package/dist/cjs/kits/artifacts.js +36 -4
  77. package/dist/cjs/kits/candidates.js +47 -5
  78. package/dist/cjs/kits/delivery.js +40 -5
  79. package/dist/cjs/kits/durable.js +155 -31
  80. package/dist/cjs/kits/evidence.js +66 -15
  81. package/dist/cjs/kits/family.js +152 -22
  82. package/dist/cjs/kits/index.js +12 -1
  83. package/dist/cjs/kits/inference.js +104 -16
  84. package/dist/cjs/kits/intents/catalog.js +67 -16
  85. package/dist/cjs/kits/intents/index.js +11 -0
  86. package/dist/cjs/kits/intents/registry.js +188 -43
  87. package/dist/cjs/kits/intents/scopes.js +215 -46
  88. package/dist/cjs/kits/interaction/command.js +140 -36
  89. package/dist/cjs/kits/interaction/commands.js +86 -11
  90. package/dist/cjs/kits/interaction/handlers.js +27 -10
  91. package/dist/cjs/kits/interaction/index.js +10 -0
  92. package/dist/cjs/kits/interaction/transfer.js +80 -14
  93. package/dist/cjs/kits/knowledge/catalog.js +62 -11
  94. package/dist/cjs/kits/knowledge/index.js +16 -1
  95. package/dist/cjs/kits/knowledge/publication.js +99 -23
  96. package/dist/cjs/kits/knowledge/sections.js +33 -4
  97. package/dist/cjs/kits/normalization.js +51 -7
  98. package/dist/cjs/kits/policies.js +79 -15
  99. package/dist/cjs/kits/presentation/events.js +54 -10
  100. package/dist/cjs/kits/presentation/index.js +24 -1
  101. package/dist/cjs/kits/presentation/outputs.js +176 -38
  102. package/dist/cjs/kits/presentation/templates.js +33 -5
  103. package/dist/cjs/kits/presentation/variants.js +31 -2
  104. package/dist/cjs/kits/projection.js +63 -8
  105. package/dist/cjs/kits/rank-fusion.js +27 -4
  106. package/dist/cjs/kits/reflection-log-source.js +89 -16
  107. package/dist/cjs/kits/reflection.js +234 -60
  108. package/dist/cjs/kits/retrieval.js +98 -18
  109. package/dist/cjs/kits/search.js +180 -27
  110. package/dist/cjs/kits/text-skills.js +104 -19
  111. package/dist/cjs/kits/tools.js +415 -74
  112. package/dist/cjs/kits/vector-search.js +50 -16
  113. package/dist/cjs/mock/node.js +7 -1
  114. package/dist/cjs/mock/web.js +7 -1
  115. package/dist/cjs/mock.js +7 -1
  116. package/dist/cjs/model/binding.js +68 -17
  117. package/dist/cjs/model/call-budget.js +45 -4
  118. package/dist/cjs/model/decision-retry.js +19 -1
  119. package/dist/cjs/model/defaults.js +27 -4
  120. package/dist/cjs/model/index.js +7 -0
  121. package/dist/cjs/model/interactions/arguments.js +36 -1
  122. package/dist/cjs/model/interactions/json-object.js +48 -12
  123. package/dist/cjs/model/interactions/native-functions.js +52 -10
  124. package/dist/cjs/model/message-diagnostics.js +17 -4
  125. package/dist/cjs/model/options.js +9 -1
  126. package/dist/cjs/model/preparation.js +86 -12
  127. package/dist/cjs/model/runner.js +413 -79
  128. package/dist/cjs/model/selection-transport.js +48 -8
  129. package/dist/cjs/model/settings.js +67 -13
  130. package/dist/cjs/model/token-budget.js +69 -11
  131. package/dist/cjs/model/transports.js +59 -6
  132. package/dist/cjs/structs/common.js +11 -0
  133. package/dist/cjs/structs/debug.js +34 -5
  134. package/dist/cjs/structs/errors.js +26 -1
  135. package/dist/cjs/structs/index.js +11 -1
  136. package/dist/cjs/structs/kits/durable.js +7 -0
  137. package/dist/cjs/structs/kits/family.js +1 -0
  138. package/dist/cjs/structs/kits/interaction.js +8 -1
  139. package/dist/cjs/structs/kits/knowledge-publication.js +1 -0
  140. package/dist/cjs/structs/kits/reflection.js +18 -3
  141. package/dist/cjs/structs/model/chat-provider.js +6 -0
  142. package/dist/cjs/structs/support/model/completion.js +2 -0
  143. package/dist/cjs/structs/support/model/messages.js +2 -0
  144. package/dist/cjs/support/capabilities.js +43 -6
  145. package/dist/cjs/support/context/assembly.js +88 -16
  146. package/dist/cjs/support/context/compression.js +48 -6
  147. package/dist/cjs/support/context/fragments.js +6 -0
  148. package/dist/cjs/support/context/history.js +36 -1
  149. package/dist/cjs/support/context/index.js +11 -0
  150. package/dist/cjs/support/context/nodes.js +164 -35
  151. package/dist/cjs/support/context/processing.js +319 -61
  152. package/dist/cjs/support/context/selection-policy.js +98 -21
  153. package/dist/cjs/support/context/selection.js +61 -10
  154. package/dist/cjs/support/context/snapshot.js +29 -7
  155. package/dist/cjs/support/context/strategies.js +120 -28
  156. package/dist/cjs/support/index.js +9 -1
  157. package/dist/cjs/support/model/capabilities.js +20 -1
  158. package/dist/cjs/support/model/chat-completions.js +92 -20
  159. package/dist/cjs/support/model/children.js +34 -6
  160. package/dist/cjs/support/model/compatible-provider.js +189 -59
  161. package/dist/cjs/support/model/completion/calls.js +61 -0
  162. package/dist/cjs/support/model/completion/default.js +33 -0
  163. package/dist/cjs/support/model/completion/index.js +28 -0
  164. package/dist/cjs/support/model/completion/session.js +107 -0
  165. package/dist/cjs/support/model/index.js +12 -0
  166. package/dist/cjs/support/model/interactions/index.js +12 -1
  167. package/dist/cjs/support/model/interactions/json-object.js +6 -0
  168. package/dist/cjs/support/model/interactions/native-functions.js +6 -0
  169. package/dist/cjs/support/model/observer.js +32 -6
  170. package/dist/cjs/support/model/preview-rules.js +66 -16
  171. package/dist/cjs/support/model/reply-preview.js +77 -17
  172. package/dist/cjs/support/model/stage-transport.js +33 -7
  173. package/dist/cjs/support/model/strategies.js +75 -14
  174. package/dist/cjs/support/model/transports.js +53 -11
  175. package/dist/cjs/support/registration.js +49 -7
  176. package/dist/cjs/support/schema.js +46 -4
  177. package/dist/cjs/support/stream-events.js +60 -8
  178. package/dist/cjs/support/tool-runtime.js +6 -0
  179. package/dist/cjs/support/tools.js +79 -10
  180. package/dist/cjs/support/transport/index.js +7 -0
  181. package/dist/cjs/support/transport/json.js +28 -4
  182. package/dist/cjs/support/transport/sse.js +25 -2
  183. package/dist/cjs/utils/break-observer.js +20 -2
  184. package/dist/cjs/utils/cancellation.js +77 -9
  185. package/dist/cjs/utils/catalog.js +19 -4
  186. package/dist/cjs/utils/debug.js +14 -2
  187. package/dist/cjs/utils/index.js +8 -0
  188. package/dist/cjs/utils/interaction-definition.js +26 -6
  189. package/dist/cjs/utils/invocation.js +42 -4
  190. package/dist/cjs/utils/model-protocol.js +20 -1
  191. package/dist/cjs/utils/object.js +16 -0
  192. package/dist/cjs/utils/observer.js +22 -2
  193. package/dist/cjs/utils/protocol-registry.js +47 -4
  194. package/dist/cjs/utils/query-key.js +21 -2
  195. package/dist/cjs/utils/registration.js +18 -2
  196. package/dist/cjs/utils/rules.js +39 -11
  197. package/dist/cjs/utils/schema-adapter.js +25 -2
  198. package/dist/cjs/utils/synchronous.js +64 -7
  199. package/dist/cjs/utils/text.js +15 -1
  200. package/dist/esm/capabilities/index.d.ts +13 -0
  201. package/dist/esm/capabilities/index.js +13 -0
  202. package/dist/esm/capabilities/invocation.d.ts +16 -2
  203. package/dist/esm/capabilities/invocation.js +80 -10
  204. package/dist/esm/capabilities/model.d.ts +68 -1
  205. package/dist/esm/capabilities/model.js +126 -13
  206. package/dist/esm/capabilities/tool-runtime.d.ts +11 -0
  207. package/dist/esm/capabilities/tool-runtime.js +64 -12
  208. package/dist/esm/capabilities/tools.d.ts +96 -3
  209. package/dist/esm/capabilities/tools.js +267 -32
  210. package/dist/esm/context/assembly.d.ts +13 -2
  211. package/dist/esm/context/assembly.js +46 -5
  212. package/dist/esm/context/audit.d.ts +23 -1
  213. package/dist/esm/context/audit.js +31 -6
  214. package/dist/esm/context/fragments.d.ts +37 -3
  215. package/dist/esm/context/fragments.js +54 -11
  216. package/dist/esm/context/index.d.ts +12 -0
  217. package/dist/esm/context/index.js +12 -0
  218. package/dist/esm/context/journal.d.ts +32 -1
  219. package/dist/esm/context/journal.js +84 -7
  220. package/dist/esm/context/plan.d.ts +11 -1
  221. package/dist/esm/context/plan.js +30 -2
  222. package/dist/esm/diagnostics/catalog.d.ts +6 -0
  223. package/dist/esm/diagnostics/catalog.js +17 -3
  224. package/dist/esm/diagnostics/index.d.ts +30 -2
  225. package/dist/esm/diagnostics/index.js +149 -29
  226. package/dist/esm/diagnostics/sub-flow.d.ts +41 -3
  227. package/dist/esm/diagnostics/sub-flow.js +240 -40
  228. package/dist/esm/errors.d.ts +22 -2
  229. package/dist/esm/errors.js +99 -17
  230. package/dist/esm/execution/branch.d.ts +19 -1
  231. package/dist/esm/execution/branch.js +20 -4
  232. package/dist/esm/execution/engine.d.ts +291 -5
  233. package/dist/esm/execution/engine.js +471 -57
  234. package/dist/esm/execution/events.d.ts +16 -2
  235. package/dist/esm/execution/events.js +136 -18
  236. package/dist/esm/execution/index.d.ts +7 -0
  237. package/dist/esm/execution/index.js +7 -0
  238. package/dist/esm/execution/reporting.d.ts +49 -1
  239. package/dist/esm/execution/reporting.js +75 -6
  240. package/dist/esm/execution/state.d.ts +126 -10
  241. package/dist/esm/execution/state.js +161 -22
  242. package/dist/esm/execution/workflow.d.ts +121 -3
  243. package/dist/esm/execution/workflow.js +224 -32
  244. package/dist/esm/index.d.ts +17 -1
  245. package/dist/esm/index.js +18 -0
  246. package/dist/esm/kits/aggregation.d.ts +34 -2
  247. package/dist/esm/kits/aggregation.js +45 -3
  248. package/dist/esm/kits/answering/batch.d.ts +17 -0
  249. package/dist/esm/kits/answering/batch.js +23 -4
  250. package/dist/esm/kits/answering/check-result.d.ts +18 -1
  251. package/dist/esm/kits/answering/check-result.js +31 -8
  252. package/dist/esm/kits/answering/checks.d.ts +11 -0
  253. package/dist/esm/kits/answering/checks.js +24 -3
  254. package/dist/esm/kits/answering/flow.d.ts +25 -2
  255. package/dist/esm/kits/answering/flow.js +192 -36
  256. package/dist/esm/kits/answering/index.d.ts +12 -0
  257. package/dist/esm/kits/answering/index.js +19 -1
  258. package/dist/esm/kits/answering/tasks.d.ts +32 -1
  259. package/dist/esm/kits/answering/tasks.js +88 -13
  260. package/dist/esm/kits/artifacts.d.ts +11 -0
  261. package/dist/esm/kits/artifacts.js +36 -4
  262. package/dist/esm/kits/candidates.d.ts +23 -1
  263. package/dist/esm/kits/candidates.js +47 -5
  264. package/dist/esm/kits/delivery.d.ts +34 -0
  265. package/dist/esm/kits/delivery.js +40 -5
  266. package/dist/esm/kits/durable.d.ts +19 -0
  267. package/dist/esm/kits/durable.js +155 -31
  268. package/dist/esm/kits/evidence.d.ts +28 -5
  269. package/dist/esm/kits/evidence.js +66 -15
  270. package/dist/esm/kits/family.d.ts +17 -1
  271. package/dist/esm/kits/family.js +152 -22
  272. package/dist/esm/kits/index.d.ts +12 -1
  273. package/dist/esm/kits/index.js +12 -1
  274. package/dist/esm/kits/inference.d.ts +64 -0
  275. package/dist/esm/kits/inference.js +104 -16
  276. package/dist/esm/kits/intents/catalog.d.ts +13 -1
  277. package/dist/esm/kits/intents/catalog.js +67 -16
  278. package/dist/esm/kits/intents/index.d.ts +11 -0
  279. package/dist/esm/kits/intents/index.js +11 -0
  280. package/dist/esm/kits/intents/registry.d.ts +61 -3
  281. package/dist/esm/kits/intents/registry.js +188 -43
  282. package/dist/esm/kits/intents/scopes.d.ts +73 -3
  283. package/dist/esm/kits/intents/scopes.js +215 -46
  284. package/dist/esm/kits/interaction/command.d.ts +38 -4
  285. package/dist/esm/kits/interaction/command.js +140 -36
  286. package/dist/esm/kits/interaction/commands.d.ts +66 -2
  287. package/dist/esm/kits/interaction/commands.js +86 -11
  288. package/dist/esm/kits/interaction/handlers.d.ts +19 -2
  289. package/dist/esm/kits/interaction/handlers.js +27 -10
  290. package/dist/esm/kits/interaction/index.d.ts +10 -0
  291. package/dist/esm/kits/interaction/index.js +10 -0
  292. package/dist/esm/kits/interaction/transfer.d.ts +39 -2
  293. package/dist/esm/kits/interaction/transfer.js +80 -14
  294. package/dist/esm/kits/knowledge/catalog.d.ts +13 -0
  295. package/dist/esm/kits/knowledge/catalog.js +62 -11
  296. package/dist/esm/kits/knowledge/index.d.ts +11 -0
  297. package/dist/esm/kits/knowledge/index.js +16 -1
  298. package/dist/esm/kits/knowledge/publication.d.ts +15 -1
  299. package/dist/esm/kits/knowledge/publication.js +99 -23
  300. package/dist/esm/kits/knowledge/sections.d.ts +31 -1
  301. package/dist/esm/kits/knowledge/sections.js +33 -4
  302. package/dist/esm/kits/normalization.d.ts +25 -2
  303. package/dist/esm/kits/normalization.js +51 -7
  304. package/dist/esm/kits/policies.d.ts +26 -3
  305. package/dist/esm/kits/policies.js +79 -15
  306. package/dist/esm/kits/presentation/events.d.ts +51 -4
  307. package/dist/esm/kits/presentation/events.js +54 -10
  308. package/dist/esm/kits/presentation/index.d.ts +12 -0
  309. package/dist/esm/kits/presentation/index.js +25 -2
  310. package/dist/esm/kits/presentation/outputs.d.ts +30 -1
  311. package/dist/esm/kits/presentation/outputs.js +176 -38
  312. package/dist/esm/kits/presentation/templates.d.ts +32 -3
  313. package/dist/esm/kits/presentation/templates.js +33 -5
  314. package/dist/esm/kits/presentation/variants.d.ts +29 -0
  315. package/dist/esm/kits/presentation/variants.js +31 -2
  316. package/dist/esm/kits/projection.d.ts +42 -5
  317. package/dist/esm/kits/projection.js +63 -8
  318. package/dist/esm/kits/rank-fusion.d.ts +21 -1
  319. package/dist/esm/kits/rank-fusion.js +28 -5
  320. package/dist/esm/kits/reflection-log-source.d.ts +28 -1
  321. package/dist/esm/kits/reflection-log-source.js +89 -16
  322. package/dist/esm/kits/reflection.d.ts +17 -1
  323. package/dist/esm/kits/reflection.js +235 -61
  324. package/dist/esm/kits/retrieval.d.ts +18 -2
  325. package/dist/esm/kits/retrieval.js +98 -18
  326. package/dist/esm/kits/search.d.ts +56 -3
  327. package/dist/esm/kits/search.js +180 -27
  328. package/dist/esm/kits/text-skills.d.ts +16 -2
  329. package/dist/esm/kits/text-skills.js +104 -19
  330. package/dist/esm/kits/tools.d.ts +122 -2
  331. package/dist/esm/kits/tools.js +416 -74
  332. package/dist/esm/kits/vector-search.d.ts +47 -1
  333. package/dist/esm/kits/vector-search.js +51 -17
  334. package/dist/esm/mock/node.d.ts +7 -0
  335. package/dist/esm/mock/node.js +7 -1
  336. package/dist/esm/mock/web.d.ts +7 -0
  337. package/dist/esm/mock/web.js +7 -1
  338. package/dist/esm/mock.d.ts +7 -0
  339. package/dist/esm/mock.js +7 -1
  340. package/dist/esm/model/binding.d.ts +32 -3
  341. package/dist/esm/model/binding.js +68 -17
  342. package/dist/esm/model/call-budget.d.ts +30 -2
  343. package/dist/esm/model/call-budget.js +45 -4
  344. package/dist/esm/model/decision-retry.d.ts +10 -1
  345. package/dist/esm/model/decision-retry.js +19 -1
  346. package/dist/esm/model/defaults.d.ts +13 -2
  347. package/dist/esm/model/defaults.js +27 -4
  348. package/dist/esm/model/index.d.ts +7 -0
  349. package/dist/esm/model/index.js +7 -0
  350. package/dist/esm/model/interactions/arguments.d.ts +27 -0
  351. package/dist/esm/model/interactions/arguments.js +36 -1
  352. package/dist/esm/model/interactions/json-object.d.ts +7 -1
  353. package/dist/esm/model/interactions/json-object.js +48 -12
  354. package/dist/esm/model/interactions/native-functions.d.ts +6 -0
  355. package/dist/esm/model/interactions/native-functions.js +52 -10
  356. package/dist/esm/model/message-diagnostics.d.ts +17 -1
  357. package/dist/esm/model/message-diagnostics.js +17 -4
  358. package/dist/esm/model/options.d.ts +18 -1
  359. package/dist/esm/model/options.js +9 -1
  360. package/dist/esm/model/preparation.d.ts +30 -2
  361. package/dist/esm/model/preparation.js +86 -12
  362. package/dist/esm/model/runner.d.ts +129 -5
  363. package/dist/esm/model/runner.js +414 -80
  364. package/dist/esm/model/selection-transport.d.ts +14 -1
  365. package/dist/esm/model/selection-transport.js +48 -8
  366. package/dist/esm/model/settings.d.ts +11 -0
  367. package/dist/esm/model/settings.js +67 -13
  368. package/dist/esm/model/token-budget.d.ts +59 -1
  369. package/dist/esm/model/token-budget.js +69 -11
  370. package/dist/esm/model/transports.d.ts +20 -2
  371. package/dist/esm/model/transports.js +59 -6
  372. package/dist/esm/structs/capabilities/invocation.d.ts +36 -0
  373. package/dist/esm/structs/capabilities/model.d.ts +27 -0
  374. package/dist/esm/structs/capabilities/tools.d.ts +38 -0
  375. package/dist/esm/structs/common.d.ts +62 -2
  376. package/dist/esm/structs/common.js +11 -0
  377. package/dist/esm/structs/context/fragments.d.ts +28 -0
  378. package/dist/esm/structs/context/journal.d.ts +28 -3
  379. package/dist/esm/structs/context/processing.d.ts +11 -0
  380. package/dist/esm/structs/debug.d.ts +58 -1
  381. package/dist/esm/structs/debug.js +34 -5
  382. package/dist/esm/structs/diagnostics.d.ts +119 -1
  383. package/dist/esm/structs/errors.d.ts +42 -1
  384. package/dist/esm/structs/errors.js +26 -1
  385. package/dist/esm/structs/execution/engine.d.ts +24 -1
  386. package/dist/esm/structs/execution/events.d.ts +12 -0
  387. package/dist/esm/structs/execution/workflow.d.ts +71 -0
  388. package/dist/esm/structs/index.d.ts +11 -1
  389. package/dist/esm/structs/index.js +11 -1
  390. package/dist/esm/structs/invocation.d.ts +30 -0
  391. package/dist/esm/structs/kits/aggregation.d.ts +12 -0
  392. package/dist/esm/structs/kits/answering/checks.d.ts +11 -0
  393. package/dist/esm/structs/kits/answering/flow.d.ts +35 -1
  394. package/dist/esm/structs/kits/answering/state.d.ts +21 -0
  395. package/dist/esm/structs/kits/answering/tasks.d.ts +21 -0
  396. package/dist/esm/structs/kits/artifacts.d.ts +14 -0
  397. package/dist/esm/structs/kits/candidates.d.ts +19 -0
  398. package/dist/esm/structs/kits/delivery.d.ts +22 -0
  399. package/dist/esm/structs/kits/durable.d.ts +56 -3
  400. package/dist/esm/structs/kits/durable.js +7 -0
  401. package/dist/esm/structs/kits/evidence.d.ts +23 -0
  402. package/dist/esm/structs/kits/family.d.ts +49 -1
  403. package/dist/esm/structs/kits/family.js +1 -0
  404. package/dist/esm/structs/kits/intents/catalog.d.ts +26 -0
  405. package/dist/esm/structs/kits/intents/registry.d.ts +34 -0
  406. package/dist/esm/structs/kits/intents/scopes.d.ts +36 -1
  407. package/dist/esm/structs/kits/interaction.d.ts +64 -0
  408. package/dist/esm/structs/kits/interaction.js +8 -1
  409. package/dist/esm/structs/kits/knowledge-publication.d.ts +43 -1
  410. package/dist/esm/structs/kits/knowledge-publication.js +1 -0
  411. package/dist/esm/structs/kits/knowledge.d.ts +39 -2
  412. package/dist/esm/structs/kits/normalization.d.ts +15 -0
  413. package/dist/esm/structs/kits/policies.d.ts +25 -1
  414. package/dist/esm/structs/kits/presentation/events.d.ts +28 -4
  415. package/dist/esm/structs/kits/presentation/outputs.d.ts +38 -1
  416. package/dist/esm/structs/kits/presentation/templates.d.ts +15 -0
  417. package/dist/esm/structs/kits/projection.d.ts +21 -0
  418. package/dist/esm/structs/kits/reflection.d.ts +61 -2
  419. package/dist/esm/structs/kits/reflection.js +18 -3
  420. package/dist/esm/structs/kits/retrieval.d.ts +39 -0
  421. package/dist/esm/structs/kits/search.d.ts +24 -0
  422. package/dist/esm/structs/kits/text-skills.d.ts +36 -0
  423. package/dist/esm/structs/kits/tools.d.ts +87 -0
  424. package/dist/esm/structs/model/chat-provider.d.ts +24 -1
  425. package/dist/esm/structs/model/chat-provider.js +6 -0
  426. package/dist/esm/structs/model/interactions.d.ts +38 -0
  427. package/dist/esm/structs/model/messages.d.ts +34 -0
  428. package/dist/esm/structs/model/runtime.d.ts +104 -6
  429. package/dist/esm/structs/support/capabilities.d.ts +19 -2
  430. package/dist/esm/structs/support/context-processing.d.ts +88 -9
  431. package/dist/esm/structs/support/context.d.ts +29 -1
  432. package/dist/esm/structs/support/model/completion.d.ts +50 -0
  433. package/dist/esm/structs/support/model/completion.js +1 -0
  434. package/dist/esm/structs/support/model/interactions.d.ts +13 -1
  435. package/dist/esm/structs/support/model/messages.d.ts +54 -0
  436. package/dist/esm/structs/support/model/messages.js +1 -0
  437. package/dist/esm/structs/support/model/provider-observer.d.ts +22 -1
  438. package/dist/esm/structs/support/model/provider.d.ts +71 -6
  439. package/dist/esm/structs/support/registration.d.ts +13 -0
  440. package/dist/esm/structs/support/schema.d.ts +14 -0
  441. package/dist/esm/structs/support/tools.d.ts +28 -0
  442. package/dist/esm/structs/support/transport/json.d.ts +16 -0
  443. package/dist/esm/structs/support/transport/sse.d.ts +15 -0
  444. package/dist/esm/structs/utils/rules.d.ts +19 -0
  445. package/dist/esm/support/capabilities.d.ts +25 -2
  446. package/dist/esm/support/capabilities.js +43 -6
  447. package/dist/esm/support/context/assembly.d.ts +35 -4
  448. package/dist/esm/support/context/assembly.js +88 -16
  449. package/dist/esm/support/context/compression.d.ts +17 -1
  450. package/dist/esm/support/context/compression.js +48 -6
  451. package/dist/esm/support/context/fragments.d.ts +6 -0
  452. package/dist/esm/support/context/fragments.js +6 -0
  453. package/dist/esm/support/context/history.d.ts +43 -0
  454. package/dist/esm/support/context/history.js +36 -1
  455. package/dist/esm/support/context/index.d.ts +13 -2
  456. package/dist/esm/support/context/index.js +12 -1
  457. package/dist/esm/support/context/nodes.d.ts +65 -3
  458. package/dist/esm/support/context/nodes.js +165 -36
  459. package/dist/esm/support/context/processing.d.ts +152 -1
  460. package/dist/esm/support/context/processing.js +320 -62
  461. package/dist/esm/support/context/selection-policy.d.ts +42 -2
  462. package/dist/esm/support/context/selection-policy.js +98 -21
  463. package/dist/esm/support/context/selection.d.ts +14 -1
  464. package/dist/esm/support/context/selection.js +61 -10
  465. package/dist/esm/support/context/snapshot.d.ts +23 -1
  466. package/dist/esm/support/context/snapshot.js +29 -7
  467. package/dist/esm/support/context/strategies.d.ts +35 -2
  468. package/dist/esm/support/context/strategies.js +120 -28
  469. package/dist/esm/support/index.d.ts +9 -1
  470. package/dist/esm/support/index.js +9 -1
  471. package/dist/esm/support/model/capabilities.d.ts +10 -0
  472. package/dist/esm/support/model/capabilities.js +20 -1
  473. package/dist/esm/support/model/chat-completions.d.ts +44 -15
  474. package/dist/esm/support/model/chat-completions.js +92 -20
  475. package/dist/esm/support/model/children.d.ts +34 -2
  476. package/dist/esm/support/model/children.js +34 -6
  477. package/dist/esm/support/model/compatible-provider.d.ts +29 -3
  478. package/dist/esm/support/model/compatible-provider.js +190 -60
  479. package/dist/esm/support/model/completion/calls.d.ts +40 -0
  480. package/dist/esm/support/model/completion/calls.js +58 -0
  481. package/dist/esm/support/model/completion/default.d.ts +11 -0
  482. package/dist/esm/support/model/completion/default.js +30 -0
  483. package/dist/esm/support/model/completion/index.d.ts +10 -0
  484. package/dist/esm/support/model/completion/index.js +22 -0
  485. package/dist/esm/support/model/completion/session.d.ts +16 -0
  486. package/dist/esm/support/model/completion/session.js +104 -0
  487. package/dist/esm/support/model/index.d.ts +14 -0
  488. package/dist/esm/support/model/index.js +12 -0
  489. package/dist/esm/support/model/interactions/index.d.ts +1 -1
  490. package/dist/esm/support/model/interactions/index.js +12 -1
  491. package/dist/esm/support/model/interactions/json-object.d.ts +6 -0
  492. package/dist/esm/support/model/interactions/json-object.js +6 -0
  493. package/dist/esm/support/model/interactions/native-functions.d.ts +6 -0
  494. package/dist/esm/support/model/interactions/native-functions.js +6 -0
  495. package/dist/esm/support/model/observer.d.ts +25 -2
  496. package/dist/esm/support/model/observer.js +32 -6
  497. package/dist/esm/support/model/preview-rules.d.ts +26 -2
  498. package/dist/esm/support/model/preview-rules.js +66 -16
  499. package/dist/esm/support/model/reply-preview.d.ts +22 -1
  500. package/dist/esm/support/model/reply-preview.js +77 -17
  501. package/dist/esm/support/model/stage-transport.d.ts +9 -1
  502. package/dist/esm/support/model/stage-transport.js +33 -7
  503. package/dist/esm/support/model/strategies.d.ts +28 -2
  504. package/dist/esm/support/model/strategies.js +75 -14
  505. package/dist/esm/support/model/transports.d.ts +17 -1
  506. package/dist/esm/support/model/transports.js +53 -11
  507. package/dist/esm/support/registration.d.ts +20 -1
  508. package/dist/esm/support/registration.js +49 -7
  509. package/dist/esm/support/schema.d.ts +31 -1
  510. package/dist/esm/support/schema.js +46 -4
  511. package/dist/esm/support/stream-events.d.ts +22 -1
  512. package/dist/esm/support/stream-events.js +60 -8
  513. package/dist/esm/support/tool-runtime.d.ts +6 -0
  514. package/dist/esm/support/tool-runtime.js +6 -0
  515. package/dist/esm/support/tools.d.ts +22 -0
  516. package/dist/esm/support/tools.js +79 -10
  517. package/dist/esm/support/transport/index.d.ts +7 -0
  518. package/dist/esm/support/transport/index.js +7 -0
  519. package/dist/esm/support/transport/json.d.ts +29 -2
  520. package/dist/esm/support/transport/json.js +28 -4
  521. package/dist/esm/support/transport/sse.d.ts +31 -1
  522. package/dist/esm/support/transport/sse.js +25 -2
  523. package/dist/esm/types.d.ts +9 -1
  524. package/dist/esm/utils/break-observer.d.ts +27 -2
  525. package/dist/esm/utils/break-observer.js +20 -2
  526. package/dist/esm/utils/cancellation.d.ts +56 -5
  527. package/dist/esm/utils/cancellation.js +77 -9
  528. package/dist/esm/utils/catalog.d.ts +20 -1
  529. package/dist/esm/utils/catalog.js +19 -4
  530. package/dist/esm/utils/debug.d.ts +20 -1
  531. package/dist/esm/utils/debug.js +14 -2
  532. package/dist/esm/utils/index.d.ts +8 -0
  533. package/dist/esm/utils/index.js +8 -0
  534. package/dist/esm/utils/interaction-definition.d.ts +18 -1
  535. package/dist/esm/utils/interaction-definition.js +26 -6
  536. package/dist/esm/utils/invocation.d.ts +36 -1
  537. package/dist/esm/utils/invocation.js +42 -4
  538. package/dist/esm/utils/model-protocol.d.ts +8 -0
  539. package/dist/esm/utils/model-protocol.js +20 -1
  540. package/dist/esm/utils/object.d.ts +16 -0
  541. package/dist/esm/utils/object.js +16 -0
  542. package/dist/esm/utils/observer.d.ts +19 -1
  543. package/dist/esm/utils/observer.js +22 -2
  544. package/dist/esm/utils/protocol-registry.d.ts +38 -1
  545. package/dist/esm/utils/protocol-registry.js +47 -4
  546. package/dist/esm/utils/query-key.d.ts +11 -1
  547. package/dist/esm/utils/query-key.js +21 -2
  548. package/dist/esm/utils/registration.d.ts +34 -2
  549. package/dist/esm/utils/registration.js +18 -2
  550. package/dist/esm/utils/rules.d.ts +81 -4
  551. package/dist/esm/utils/rules.js +39 -11
  552. package/dist/esm/utils/schema-adapter.d.ts +12 -1
  553. package/dist/esm/utils/schema-adapter.js +25 -2
  554. package/dist/esm/utils/synchronous.d.ts +60 -4
  555. package/dist/esm/utils/synchronous.js +64 -7
  556. package/dist/esm/utils/text.d.ts +15 -1
  557. package/dist/esm/utils/text.js +15 -1
  558. package/package.json +7 -3
@@ -1,38 +1,99 @@
1
+ /**
2
+ * App-owned knowledge loading for the `agent-core-app` Skill.
3
+ *
4
+ * Reads the App's `knowledge.config.json` allowlist, verifies each referenced document against the
5
+ * configured byte limit, and compiles the documents into a Knowledge Kit catalog. This is App
6
+ * configuration code, not a Core file-store API: no model or request may supply a filesystem path.
7
+ *
8
+ * Exports: `compileApplicationKnowledge`, `readApplicationKnowledge`, `loadApplicationKnowledge`.
9
+ */
1
10
  import { readFile } from 'node:fs/promises';
2
11
  import { createHash } from 'node:crypto';
3
12
  import { Knowledge } from '@jangts/agent-core/kits/knowledge';
4
13
 
5
- // This is App-owned configuration and loading code, not a Core file-store API.
14
+ /**
15
+ * Compile parsed documents into a Knowledge catalog.
16
+ *
17
+ * @param documents Documents produced by `Knowledge.parseKnowledgeDocument`.
18
+ * @param policy Validated `knowledge.config.json` content (`schemaVersion`, `maxReadChars`,
19
+ * `requiredReads`).
20
+ * @returns The compiled catalog; required reads are resolved so a missing read fails here.
21
+ * @throws {TypeError} When the policy shape or a required read is invalid.
22
+ */
6
23
  export function compileApplicationKnowledge(documents, policy) {
7
- if (!policy || policy.schemaVersion !== 1 || !Number.isSafeInteger(policy.maxReadChars) || policy.maxReadChars < 1
8
- || !Array.isArray(policy.requiredReads)) throw new TypeError('Invalid application knowledge policy');
24
+ if (
25
+ !policy ||
26
+ policy.schemaVersion !== 1 ||
27
+ !Number.isSafeInteger(policy.maxReadChars) ||
28
+ policy.maxReadChars < 1 ||
29
+ !Array.isArray(policy.requiredReads)
30
+ )
31
+ throw new TypeError('Invalid application knowledge policy');
9
32
  const catalog = Knowledge.defineKnowledgeCatalog(documents, { maxChars: policy.maxReadChars });
10
33
  // Required task reads must fit their runtime content budget as well as resolve.
11
34
  for (const read of policy.requiredReads) catalog.read(read);
12
35
  return catalog;
13
36
  }
14
37
 
38
+ /**
39
+ * Read the knowledge config and its allowed documents from one directory.
40
+ *
41
+ * The config hash is computed over the exact bytes parsed below, so a proposal identity cannot
42
+ * drift from the document catalog it was derived from.
43
+ *
44
+ * @param directory Directory holding `knowledge.config.json` and the listed documents.
45
+ * @returns Parsed `documents`, the raw `policy` and the `baseConfigSha256` of the config file.
46
+ * @throws {TypeError} When the config or a document entry fails validation.
47
+ * @throws {RangeError} When a source document exceeds `maxDocumentBytes`.
48
+ */
15
49
  export async function readApplicationKnowledge(directory = new URL('./', import.meta.url)) {
16
50
  // Bind validation and proposal identity to the exact bytes parsed below.
17
51
  const configBytes = await readFile(new URL('knowledge.config.json', directory));
18
52
  const baseConfigSha256 = createHash('sha256').update(configBytes).digest('hex');
19
53
  const policy = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(configBytes));
20
- if (!Array.isArray(policy.documents) || !Number.isSafeInteger(policy.maxDocumentBytes)
21
- || policy.maxDocumentBytes < 1) throw new TypeError('Invalid application document catalog');
22
- const documents = await Promise.all(policy.documents.map(async entry => {
23
- // The allowlist is App-maintained. Neither a model nor a request supplies this filesystem path.
24
- if (!entry || typeof entry.id !== 'string' || typeof entry.file !== 'string'
25
- || !/^[a-z0-9][a-z0-9.-]*\.knowledge\.md$/.test(entry.file)
26
- || (entry.locale !== undefined && typeof entry.locale !== 'string')) throw new TypeError('Invalid application document entry');
27
- const bytes = await readFile(new URL(entry.file, directory));
28
- if (bytes.length > policy.maxDocumentBytes) throw new RangeError('Source document exceeds the App limit');
29
- const text = new TextDecoder('utf-8', { fatal: true }).decode(bytes);
30
- const revision = createHash('sha256').update(JSON.stringify([entry.id, entry.locale, text])).digest('hex');
31
- return Knowledge.parseKnowledgeDocument({ id: entry.id, revision, locale: entry.locale, text });
32
- }));
54
+ if (
55
+ !Array.isArray(policy.documents) ||
56
+ !Number.isSafeInteger(policy.maxDocumentBytes) ||
57
+ policy.maxDocumentBytes < 1
58
+ )
59
+ throw new TypeError('Invalid application document catalog');
60
+ const documents = await Promise.all(
61
+ policy.documents.map(async (entry) => {
62
+ // The allowlist is App-maintained. Neither a model nor a request supplies this filesystem path.
63
+ if (
64
+ !entry ||
65
+ typeof entry.id !== 'string' ||
66
+ typeof entry.file !== 'string' ||
67
+ !/^[a-z0-9][a-z0-9.-]*\.knowledge\.md$/.test(entry.file) ||
68
+ (entry.locale !== undefined && typeof entry.locale !== 'string')
69
+ )
70
+ throw new TypeError('Invalid application document entry');
71
+ const bytes = await readFile(new URL(entry.file, directory));
72
+ if (bytes.length > policy.maxDocumentBytes)
73
+ throw new RangeError('Source document exceeds the App limit');
74
+ const text = new TextDecoder('utf-8', { fatal: true }).decode(bytes);
75
+ const revision = createHash('sha256')
76
+ .update(JSON.stringify([entry.id, entry.locale, text]))
77
+ .digest('hex');
78
+ return Knowledge.parseKnowledgeDocument({
79
+ id: entry.id,
80
+ revision,
81
+ locale: entry.locale,
82
+ text,
83
+ });
84
+ }),
85
+ );
33
86
  return { documents, policy, baseConfigSha256 };
34
87
  }
35
88
 
89
+ /**
90
+ * Read and compile the App knowledge catalog in one step.
91
+ *
92
+ * @param directory Directory holding `knowledge.config.json` and the listed documents.
93
+ * @returns The compiled Knowledge catalog.
94
+ * @throws {TypeError | RangeError} Same validation failures as `readApplicationKnowledge` and
95
+ * `compileApplicationKnowledge`.
96
+ */
36
97
  export async function loadApplicationKnowledge(directory = new URL('./', import.meta.url)) {
37
98
  const { documents, policy } = await readApplicationKnowledge(directory);
38
99
  return compileApplicationKnowledge(documents, policy);
@@ -1,16 +1,44 @@
1
+ /*
2
+ * Reader for a knowledge source file supplied by the operator.
3
+ *
4
+ * The file belongs to the App's development skills (开发技能). It turns one UTF-8 source
5
+ * file into a parsed knowledge document plus the hashes that identify it. The Knowledge
6
+ * Kit owns the document contract; this module only owns the file access, the byte budget
7
+ * and the identity derivation.
8
+ *
9
+ * Main exports: `readSuppliedSource`.
10
+ */
1
11
  import { readFile } from 'node:fs/promises';
2
12
  import { basename } from 'node:path';
3
13
  import { createHash } from 'node:crypto';
4
14
  import { Knowledge } from '@jangts/agent-core/kits/knowledge';
5
15
 
16
+ /**
17
+ * Read and parse one supplied knowledge source file.
18
+ *
19
+ * @param file - Path of the UTF-8 source file.
20
+ * @param id - Stable document id; must be a lowercase slug of at most 64 characters.
21
+ * @param maxBytes - Maximum accepted file size in bytes.
22
+ * @param locale - Optional locale carried over from the document this one replaces.
23
+ * @returns The raw bytes, the parsed document, the original file name and the content hash.
24
+ * @throws TypeError For an invalid document id or a file that is not valid UTF-8.
25
+ * @throws RangeError When the file is empty or exceeds the byte budget.
26
+ * @throws Error When the decoded text is blank, or the anchors of the document are invalid.
27
+ */
6
28
  export async function readSuppliedSource(file, id, maxBytes = 32000, locale) {
29
+ // The id becomes part of the published document identity, so its shape is fixed.
7
30
  if (!/^[a-z][a-z0-9_.:-]{0,63}$/.test(id)) throw new TypeError('Choose a stable document ID');
8
31
  const bytes = await readFile(file);
9
- if (!bytes.length || bytes.length > maxBytes) throw new RangeError('Source must contain text within the configured byte budget');
32
+ if (!bytes.length || bytes.length > maxBytes)
33
+ throw new RangeError('Source must contain text within the configured byte budget');
34
+ // `fatal` rejects malformed UTF-8 instead of replacing the invalid bytes.
10
35
  const text = new TextDecoder('utf-8', { fatal: true }).decode(bytes);
11
36
  if (!text.trim()) throw new Error('Source has no content; use empty initialization instead');
37
+ // The content hash covers the raw bytes; the revision covers the parsed identity.
12
38
  const digest = createHash('sha256').update(bytes).digest('hex');
13
- const revision = createHash('sha256').update(JSON.stringify([id, locale, text])).digest('hex');
39
+ const revision = createHash('sha256')
40
+ .update(JSON.stringify([id, locale, text]))
41
+ .digest('hex');
14
42
  const document = Knowledge.parseKnowledgeDocument({ id, revision, locale, text });
15
43
  return { bytes, document, name: basename(file), digest };
16
44
  }
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Read-only planning entry for the `agent-core-app` Skill.
3
+ *
4
+ * Reports whether a project exists, which SDK it resolves, the state of its knowledge catalog and
5
+ * the SDK tools/docs that may be used next. It never evaluates project code, calls a model or
6
+ * writes files; the printed JSON is guidance for the agent, not a permission grant.
7
+ *
8
+ * Usage: `node plan.mjs PROJECT [--source UTF8_FILE]`.
9
+ */
1
10
  import { stat } from 'node:fs/promises';
2
11
  import { resolve, sep } from 'node:path';
3
12
  import { pathToFileURL } from 'node:url';
@@ -9,28 +18,53 @@ if (![1, 3].includes(args.length) || (args.length === 3 && args[1] !== '--source
9
18
  throw new Error('Usage: node plan.mjs PROJECT [--source UTF8_FILE]');
10
19
  const project = resolve(args[0]);
11
20
  let exists = true;
12
- try { if (!(await stat(project)).isDirectory()) throw new TypeError('PROJECT must be a directory'); }
13
- catch (error) { if (error.code !== 'ENOENT') throw error; exists = false; }
21
+ try {
22
+ if (!(await stat(project)).isDirectory()) throw new TypeError('PROJECT must be a directory');
23
+ } catch (error) {
24
+ if (error.code !== 'ENOENT') throw error;
25
+ exists = false;
26
+ }
14
27
  const { sdk, tools, docs, knowledgeLoader } = await resolveSdkResources(project);
15
28
  let documents = [];
16
29
  let knowledgeConfigured = false;
17
30
  let knowledgeStatus = 'unconfigured';
18
31
  let baseConfigSha256;
19
32
  if (exists) {
20
- try { await stat(resolve(project, 'knowledge.config.json')); knowledgeConfigured = true; }
21
- catch (error) { if (error.code !== 'ENOENT') throw error; }
33
+ try {
34
+ await stat(resolve(project, 'knowledge.config.json'));
35
+ knowledgeConfigured = true;
36
+ } catch (error) {
37
+ if (error.code !== 'ENOENT') throw error;
38
+ }
22
39
  if (knowledgeConfigured) {
23
- const { readApplicationKnowledge, compileApplicationKnowledge } = await import(pathToFileURL(knowledgeLoader));
40
+ const { readApplicationKnowledge, compileApplicationKnowledge } = await import(
41
+ pathToFileURL(knowledgeLoader)
42
+ );
24
43
  const snapshot = await readApplicationKnowledge(pathToFileURL(project + sep));
25
44
  const catalog = compileApplicationKnowledge(snapshot.documents, snapshot.policy);
26
- documents = snapshot.policy.documents.map(item => ({ id: item.id, file: item.file }));
45
+ documents = snapshot.policy.documents.map((item) => ({ id: item.id, file: item.file }));
27
46
  knowledgeStatus = catalog.ids().length ? 'valid' : 'empty-awaiting-source';
28
47
  baseConfigSha256 = snapshot.baseConfigSha256;
29
48
  }
30
49
  }
31
- console.log(JSON.stringify({ project, mode: exists ? 'integrate-or-maintain' : 'create-application', sdk,
32
- knowledgeConfigured, knowledgeStatus, baseConfigSha256, suppliedSource: args[2] ? resolve(args[2]) : null,
33
- factsPolicy: 'Use only supplied source; with ideas only, keep knowledge files empty.',
34
- documents, tools, docs,
35
- changedFiles: [], published: false,
36
- }, null, 2));
50
+ console.log(
51
+ JSON.stringify(
52
+ {
53
+ project,
54
+ mode: exists ? 'integrate-or-maintain' : 'create-application',
55
+ sdk,
56
+ knowledgeConfigured,
57
+ knowledgeStatus,
58
+ baseConfigSha256,
59
+ suppliedSource: args[2] ? resolve(args[2]) : null,
60
+ factsPolicy: 'Use only supplied source; with ideas only, keep knowledge files empty.',
61
+ documents,
62
+ tools,
63
+ docs,
64
+ changedFiles: [],
65
+ published: false,
66
+ },
67
+ null,
68
+ 2,
69
+ ),
70
+ );
@@ -1,3 +1,14 @@
1
+ /*
2
+ * Prepare a knowledge candidate from a supplied source file.
3
+ *
4
+ * The script belongs to the App's development skills (开发技能). It never touches the
5
+ * active knowledge files: it validates the new document against the current catalog
6
+ * and writes a self-contained candidate directory that a later publication step can
7
+ * approve. The candidate records the base configuration hash and the revisions of the
8
+ * documents it was prepared against, so the publication can detect a stale base.
9
+ *
10
+ * Main exports: none. The file runs as a command and prints one JSON receipt.
11
+ */
1
12
  import { mkdir, writeFile } from 'node:fs/promises';
2
13
  import { resolve, join, sep } from 'node:path';
3
14
  import { pathToFileURL } from 'node:url';
@@ -8,17 +19,57 @@ import { readApplicationKnowledge, compileApplicationKnowledge } from './lib/kno
8
19
  const args = process.argv.slice(2);
9
20
  if (args.length !== 5 || args[1] !== '--source' || args[3] !== '--id')
10
21
  throw new Error('Usage: node prepare-source.mjs PROJECT --source UTF8_FILE --id DOCUMENT_ID');
11
- const project = resolve(args[0]), directory = pathToFileURL(project + sep);
22
+ const project = resolve(args[0]),
23
+ // A trailing separator makes the directory a base URL, so relative entries
24
+ // resolve inside the project instead of against the file system root.
25
+ directory = pathToFileURL(project + sep);
12
26
  const { documents, policy, baseConfigSha256 } = await readApplicationKnowledge(directory);
13
- const previous = documents.find(item => item.id === args[4]);
14
- const source = await readSuppliedSource(resolve(args[2]), args[4], policy.maxDocumentBytes, previous?.locale);
15
- compileApplicationKnowledge([...documents.filter(item => item.id !== args[4]), source.document], policy);
16
- const target = join(project, '.local', 'knowledge-candidates', args[4].replace(/[^a-z0-9_.-]/g, '_') + '-' + randomUUID());
27
+ // A document with the same id is replaced rather than added.
28
+ const previous = documents.find((item) => item.id === args[4]);
29
+ const source = await readSuppliedSource(
30
+ resolve(args[2]),
31
+ args[4],
32
+ policy.maxDocumentBytes,
33
+ // The locale of the replaced document is carried over, so the revision stays
34
+ // comparable across the replacement.
35
+ previous?.locale,
36
+ );
37
+ // The candidate must fit the catalog together with the other documents, so the
38
+ // whole set is compiled before anything is written.
39
+ compileApplicationKnowledge(
40
+ [...documents.filter((item) => item.id !== args[4]), source.document],
41
+ policy,
42
+ );
43
+ const target = join(
44
+ project,
45
+ '.local',
46
+ 'knowledge-candidates',
47
+ // The random suffix keeps two candidates for the same document apart.
48
+ args[4].replace(/[^a-z0-9_.-]/g, '_') + '-' + randomUUID(),
49
+ );
17
50
  await mkdir(target, { recursive: true });
51
+ // `wx` fails instead of overwriting an existing file.
18
52
  await writeFile(join(target, 'source.knowledge.md'), source.bytes, { flag: 'wx' });
19
- await writeFile(join(target, 'proposal.json'), JSON.stringify({ schemaVersion: 1, status: 'candidate', document: args[4],
20
- action: previous ? 'replace' : 'add', originalName: source.name, locale: source.document.locale,
21
- contentSha256: source.digest, revision: source.document.revision, baseConfigSha256,
22
- baseDocuments: documents.map(item => ({ id: item.id, revision: item.revision })), published: false,
23
- }, null, 2) + '\n', { flag: 'wx' });
53
+ await writeFile(
54
+ join(target, 'proposal.json'),
55
+ JSON.stringify(
56
+ {
57
+ schemaVersion: 1,
58
+ status: 'candidate',
59
+ document: args[4],
60
+ action: previous ? 'replace' : 'add',
61
+ originalName: source.name,
62
+ locale: source.document.locale,
63
+ contentSha256: source.digest,
64
+ revision: source.document.revision,
65
+ baseConfigSha256,
66
+ baseDocuments: documents.map((item) => ({ id: item.id, revision: item.revision })),
67
+ published: false,
68
+ },
69
+ null,
70
+ 2,
71
+ ) + '\n',
72
+ { flag: 'wx' },
73
+ );
74
+ // The receipt states that nothing was published and no active file was changed.
24
75
  console.log(JSON.stringify({ candidate: target, published: false, activeFilesChanged: false }));
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Locate the SDK installation and the Skill assets it ships.
3
+ *
4
+ * The Skill never downloads or copies files: it resolves the `@jangts/agent-core` installation the
5
+ * target project already depends on, or — only when this Skill runs from inside the distributed
6
+ * SDK — the bundled sibling assets. Every returned path is verified to be a regular file so a
7
+ * broken or foreign package cannot silently supply a different asset.
8
+ *
9
+ * Exports: `resolveSdkResources`.
10
+ */
1
11
  import { createRequire } from 'node:module';
2
12
  import { readFile, stat } from 'node:fs/promises';
3
13
  import { dirname, join, resolve } from 'node:path';
@@ -11,12 +21,17 @@ const assets = {
11
21
  'prepare-source': 'skills/agent-core-app/scripts/prepare-source.mjs',
12
22
  },
13
23
  docs: {
14
- guide: 'docs/README.md', api: 'docs/api/README.md',
15
- maintenance: 'docs/maintenance.md', flow: 'docs/flows/knowledge-maintenance.md',
16
- gettingStarted: 'docs/getting-started.md', knowledge: 'docs/knowledge.md',
24
+ guide: 'docs/README.md',
25
+ api: 'docs/api/README.md',
26
+ maintenance: 'docs/maintenance.md',
27
+ flow: 'docs/flows/knowledge-maintenance.md',
28
+ gettingStarted: 'docs/getting-started.md',
29
+ knowledge: 'docs/knowledge.md',
17
30
  createApp: 'docs/create-app.md',
18
- materials: 'docs/materials.md', memory: 'docs/memory-and-learning.md',
19
- answering: 'docs/api/knowledge-answering.md', acceptance: 'docs/acceptance.md',
31
+ materials: 'docs/materials.md',
32
+ memory: 'docs/memory-and-learning.md',
33
+ answering: 'docs/api/knowledge-answering.md',
34
+ acceptance: 'docs/acceptance.md',
20
35
  },
21
36
  };
22
37
 
@@ -24,28 +39,37 @@ async function packageAt(directory) {
24
39
  try {
25
40
  const manifest = JSON.parse(await readFile(join(directory, 'package.json'), 'utf8'));
26
41
  return manifest.name === packageName ? manifest : undefined;
27
- } catch (error) { if (error.code !== 'ENOENT') throw error; }
42
+ } catch (error) {
43
+ if (error.code !== 'ENOENT') throw error;
44
+ }
28
45
  }
29
46
 
30
47
  async function installedPackage(project) {
31
48
  // Node resolves the public entry without loading it or evaluating App code.
32
49
  const require = createRequire(pathToFileURL(join(project, '__agent_core_resolution__.cjs')));
33
50
  let entry;
34
- try { entry = require.resolve(packageName); }
35
- catch (error) {
51
+ try {
52
+ entry = require.resolve(packageName);
53
+ } catch (error) {
36
54
  if (error.code !== 'MODULE_NOT_FOUND') throw error;
37
55
  // A broken installed entry must not silently select a different SDK version.
38
56
  for (const directory of require.resolve.paths(packageName) ?? []) {
39
- try { await stat(join(directory, packageName)); }
40
- catch (missing) { if (missing.code === 'ENOENT') continue; throw missing; }
57
+ try {
58
+ await stat(join(directory, packageName));
59
+ } catch (missing) {
60
+ if (missing.code === 'ENOENT') continue;
61
+ throw missing;
62
+ }
41
63
  throw error;
42
64
  }
43
65
  return;
44
66
  }
45
67
  for (let directory = dirname(entry); ; directory = dirname(directory)) {
46
68
  const manifest = await packageAt(directory);
47
- if (manifest) return { root: directory, version: manifest.version, source: 'project-dependency' };
48
- if (dirname(directory) === directory) throw new Error(`Cannot locate ${packageName} manifest for resolved entry ${entry}`);
69
+ if (manifest)
70
+ return { root: directory, version: manifest.version, source: 'project-dependency' };
71
+ if (dirname(directory) === directory)
72
+ throw new Error(`Cannot locate ${packageName} manifest for resolved entry ${entry}`);
49
73
  }
50
74
  }
51
75
 
@@ -55,21 +79,42 @@ async function requiredFile(root, relative) {
55
79
  return filename;
56
80
  }
57
81
 
82
+ /**
83
+ * Resolve the SDK root and every Skill resource path for one project.
84
+ *
85
+ * @param project Project directory used to resolve the installed SDK.
86
+ * @returns `sdk` (`root`, `version`, `source`), the `tools`/`docs` file paths and `knowledgeLoader`.
87
+ * @throws {Error} When the SDK cannot be resolved, or a declared resource is missing or not a file.
88
+ */
58
89
  export async function resolveSdkResources(project) {
59
90
  let sdk = await installedPackage(resolve(project));
60
91
  if (!sdk) {
61
92
  // Only the Skill distributed inside the SDK can use sibling assets.
62
93
  const root = fileURLToPath(new URL('../../../../', import.meta.url));
63
- const bundled = resolve(fileURLToPath(import.meta.url)) === resolve(root, 'development/skills/agent-core-app/scripts/resources.mjs');
94
+ const bundled =
95
+ resolve(fileURLToPath(import.meta.url)) ===
96
+ resolve(root, 'development/skills/agent-core-app/scripts/resources.mjs');
64
97
  const manifest = bundled ? await packageAt(root) : undefined;
65
- if (!manifest) throw new Error(`Cannot resolve ${packageName} from ${project}. Install the SDK and its real dependencies in the existing App, or use the Skill inside the distributed SDK.`);
98
+ if (!manifest)
99
+ throw new Error(
100
+ `Cannot resolve ${packageName} from ${project}. Install the SDK and its real dependencies in the existing App, or use the Skill inside the distributed SDK.`,
101
+ );
66
102
  sdk = { root, version: manifest.version, source: 'bundled-sdk' };
67
103
  }
68
104
  const resources = {};
69
105
  for (const [group, entries] of Object.entries(assets)) {
70
- resources[group] = Object.fromEntries(await Promise.all(Object.entries(entries)
71
- .map(async ([name, relative]) => [name, await requiredFile(sdk.root, relative)])));
106
+ resources[group] = Object.fromEntries(
107
+ await Promise.all(
108
+ Object.entries(entries).map(async ([name, relative]) => [
109
+ name,
110
+ await requiredFile(sdk.root, relative),
111
+ ]),
112
+ ),
113
+ );
72
114
  }
73
- const knowledgeLoader = await requiredFile(sdk.root, 'skills/agent-core-app/scripts/lib/knowledge.mjs');
115
+ const knowledgeLoader = await requiredFile(
116
+ sdk.root,
117
+ 'skills/agent-core-app/scripts/lib/knowledge.mjs',
118
+ );
74
119
  return { sdk, ...resources, knowledgeLoader };
75
120
  }
@@ -1,8 +1,25 @@
1
+ /*
2
+ * Validate the active knowledge catalog of one project.
3
+ *
4
+ * The script belongs to the App's development skills (开发技能). It loads the App-owned
5
+ * configuration and document files, compiles them into a Knowledge catalog and reports
6
+ * the resulting document ids. An empty catalog is reported as a distinct status, so a
7
+ * project that has not received its first source is not confused with a broken one.
8
+ *
9
+ * Main exports: none. The file runs as a command and prints one JSON receipt.
10
+ */
1
11
  import { pathToFileURL } from 'node:url';
2
12
  import { resolve, sep } from 'node:path';
3
13
  import { loadApplicationKnowledge } from './lib/knowledge.mjs';
4
14
 
5
15
  if (process.argv.length !== 3) throw new Error('Usage: node validate-knowledge.mjs PROJECT');
16
+ // A trailing separator turns the project path into a base URL, so the document
17
+ // entries resolve inside the project directory.
6
18
  const directory = pathToFileURL(resolve(process.argv[2]) + sep);
7
19
  const catalog = await loadApplicationKnowledge(directory);
8
- console.log(JSON.stringify({ status: catalog.ids().length ? 'valid' : 'empty-awaiting-source', documents: catalog.ids() }));
20
+ console.log(
21
+ JSON.stringify({
22
+ status: catalog.ids().length ? 'valid' : 'empty-awaiting-source',
23
+ documents: catalog.ids(),
24
+ }),
25
+ );
@@ -1,25 +1,39 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "templates": [{
4
- "id": "node-ts",
5
- "revision": "1",
6
- "directory": "node-ts",
7
- "files": [
8
- { "origin": "template", "source": "package.json.tpl", "target": "package.json" },
9
- { "origin": "template", "source": "tsconfig.json.tpl", "target": "tsconfig.json" },
10
- { "origin": "template", "source": "gitignore.tpl", "target": ".gitignore" },
11
- { "origin": "template", "source": "env.example.tpl", "target": ".env.example" },
12
- { "origin": "template", "source": "README.md.tpl", "target": "README.md" },
13
- { "origin": "template", "source": "src/config.ts.tpl", "target": "src/config.ts" },
14
- { "origin": "template", "source": "src/app.ts.tpl", "target": "src/app.ts" },
15
- { "origin": "template", "source": "src/catalog.ts.tpl", "target": "src/catalog.ts" },
16
- { "origin": "template", "source": "src/handlers.ts.tpl", "target": "src/handlers.ts" },
17
- { "origin": "template", "source": "src/model.ts.tpl", "target": "src/model.ts" },
18
- { "origin": "template", "source": "scripts/knowledge.mjs.tpl", "target": "scripts/knowledge.mjs" },
19
- { "origin": "skill", "source": "scripts/resources.mjs", "target": "scripts/sdk-resources.mjs" },
20
- { "origin": "template", "source": "examples/ask.mjs.tpl", "target": "examples/ask.mjs" },
21
- { "origin": "template", "source": "test/app.test.mjs.tpl", "target": "test/app.test.mjs" },
22
- { "origin": "template", "source": "knowledge/knowledge.config.json.tpl", "target": "knowledge/knowledge.config.json" }
23
- ]
24
- }]
3
+ "templates": [
4
+ {
5
+ "id": "node-ts",
6
+ "revision": "1",
7
+ "directory": "node-ts",
8
+ "files": [
9
+ { "origin": "template", "source": "package.json.tpl", "target": "package.json" },
10
+ { "origin": "template", "source": "tsconfig.json.tpl", "target": "tsconfig.json" },
11
+ { "origin": "template", "source": "gitignore.tpl", "target": ".gitignore" },
12
+ { "origin": "template", "source": "env.example.tpl", "target": ".env.example" },
13
+ { "origin": "template", "source": "README.md.tpl", "target": "README.md" },
14
+ { "origin": "template", "source": "src/config.ts.tpl", "target": "src/config.ts" },
15
+ { "origin": "template", "source": "src/app.ts.tpl", "target": "src/app.ts" },
16
+ { "origin": "template", "source": "src/catalog.ts.tpl", "target": "src/catalog.ts" },
17
+ { "origin": "template", "source": "src/handlers.ts.tpl", "target": "src/handlers.ts" },
18
+ { "origin": "template", "source": "src/model.ts.tpl", "target": "src/model.ts" },
19
+ {
20
+ "origin": "template",
21
+ "source": "scripts/knowledge.mjs.tpl",
22
+ "target": "scripts/knowledge.mjs"
23
+ },
24
+ {
25
+ "origin": "skill",
26
+ "source": "scripts/resources.mjs",
27
+ "target": "scripts/sdk-resources.mjs"
28
+ },
29
+ { "origin": "template", "source": "examples/ask.mjs.tpl", "target": "examples/ask.mjs" },
30
+ { "origin": "template", "source": "test/app.test.mjs.tpl", "target": "test/app.test.mjs" },
31
+ {
32
+ "origin": "template",
33
+ "source": "knowledge/knowledge.config.json.tpl",
34
+ "target": "knowledge/knowledge.config.json"
35
+ }
36
+ ]
37
+ }
38
+ ]
25
39
  }
@@ -15,6 +15,19 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.commandSchema = exports.defineCommand = void 0;
18
+ /**
19
+ * Capability registration surface: model capabilities, executable tools and host-selected
20
+ * invocations.
21
+ *
22
+ * These registries hold declarations only. Which capabilities a stage may use, whether a
23
+ * call is authorized, and what a payload means remain App decisions; this barrel provides
24
+ * the mechanisms that validate, seal and execute those declarations.
25
+ *
26
+ * Exports: the model capability registry (`model`), the executable tool registry and its
27
+ * sync/async invocation entry points (`tools`), host-selected invocation execution
28
+ * (`invocation`), and the Interaction Kit's protocol, command and handler definitions that
29
+ * shape and validate model-produced interactions.
30
+ */
18
31
  __exportStar(require("./model.js"), exports);
19
32
  __exportStar(require("./tools.js"), exports);
20
33
  __exportStar(require("./invocation.js"), exports);