@animalabs/agent-framework 0.18.0 → 0.20.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/README.md +29 -0
- package/dist/src/agent.d.ts +22 -0
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +128 -10
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/types.d.ts +1 -1
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/code-execution/py-runner.d.ts +10 -1
- package/dist/src/code-execution/py-runner.d.ts.map +1 -1
- package/dist/src/code-execution/py-runner.js +27 -2
- package/dist/src/code-execution/py-runner.js.map +1 -1
- package/dist/src/code-execution/tool-definition.d.ts +21 -0
- package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
- package/dist/src/code-execution/tool-definition.js +34 -0
- package/dist/src/code-execution/tool-definition.js.map +1 -1
- package/dist/src/framework.d.ts +161 -7
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +1183 -87
- package/dist/src/framework.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/capability-grant.d.ts +1 -1
- package/dist/src/mcpl/capability-grant.d.ts.map +1 -1
- package/dist/src/mcpl/capability-grant.js +49 -5
- package/dist/src/mcpl/capability-grant.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +74 -2
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +156 -10
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +3 -0
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +3 -0
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +318 -0
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -0
- package/dist/src/mcpl/push-coalescer.js +709 -0
- package/dist/src/mcpl/push-coalescer.js.map +1 -0
- package/dist/src/mcpl/push-handler.d.ts +7 -2
- package/dist/src/mcpl/push-handler.d.ts.map +1 -1
- package/dist/src/mcpl/push-handler.js +43 -4
- package/dist/src/mcpl/push-handler.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +18 -0
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +44 -1
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/tool-classes.d.ts +71 -0
- package/dist/src/mcpl/tool-classes.d.ts.map +1 -0
- package/dist/src/mcpl/tool-classes.js +170 -0
- package/dist/src/mcpl/tool-classes.js.map +1 -0
- package/dist/src/mcpl/tool-glob.d.ts +16 -0
- package/dist/src/mcpl/tool-glob.d.ts.map +1 -0
- package/dist/src/mcpl/tool-glob.js +41 -0
- package/dist/src/mcpl/tool-glob.js.map +1 -0
- package/dist/src/mcpl/tool-lifecycle.d.ts +253 -0
- package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -0
- package/dist/src/mcpl/tool-lifecycle.js +592 -0
- package/dist/src/mcpl/tool-lifecycle.js.map +1 -0
- package/dist/src/mcpl/transport.d.ts +12 -0
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +33 -1
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +66 -1
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js +6 -0
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/modules/discord/index.js +1 -1
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts +85 -0
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +1019 -24
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +202 -0
- package/dist/src/modules/history/semantic.d.ts.map +1 -0
- package/dist/src/modules/history/semantic.js +418 -0
- package/dist/src/modules/history/semantic.js.map +1 -0
- package/dist/src/modules/index.d.ts +2 -1
- package/dist/src/modules/index.d.ts.map +1 -1
- package/dist/src/modules/index.js.map +1 -1
- package/dist/src/tool-result-guard.d.ts +82 -0
- package/dist/src/tool-result-guard.d.ts.map +1 -0
- package/dist/src/tool-result-guard.js +306 -0
- package/dist/src/tool-result-guard.js.map +1 -0
- package/dist/src/types/agent.d.ts +14 -0
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +21 -0
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +17 -0
- package/dist/src/types/trace.d.ts.map +1 -1
- package/dist/test/channel-registry-routing.test.js +59 -0
- package/dist/test/channel-registry-routing.test.js.map +1 -1
- package/dist/test/channels-changed-respond-first.test.d.ts +2 -0
- package/dist/test/channels-changed-respond-first.test.d.ts.map +1 -0
- package/dist/test/channels-changed-respond-first.test.js +74 -0
- package/dist/test/channels-changed-respond-first.test.js.map +1 -0
- package/dist/test/code-execution.test.js +139 -0
- package/dist/test/code-execution.test.js.map +1 -1
- package/dist/test/helpers/coalescing-fixture.d.ts +72 -0
- package/dist/test/helpers/coalescing-fixture.d.ts.map +1 -0
- package/dist/test/helpers/coalescing-fixture.js +145 -0
- package/dist/test/helpers/coalescing-fixture.js.map +1 -0
- package/dist/test/helpers/coalescing-kill-child.d.ts +2 -0
- package/dist/test/helpers/coalescing-kill-child.d.ts.map +1 -0
- package/dist/test/helpers/coalescing-kill-child.js +24 -0
- package/dist/test/helpers/coalescing-kill-child.js.map +1 -0
- package/dist/test/history-module-realstore.test.d.ts +2 -0
- package/dist/test/history-module-realstore.test.d.ts.map +1 -0
- package/dist/test/history-module-realstore.test.js +363 -0
- package/dist/test/history-module-realstore.test.js.map +1 -0
- package/dist/test/history-module-semantic.test.d.ts +2 -0
- package/dist/test/history-module-semantic.test.d.ts.map +1 -0
- package/dist/test/history-module-semantic.test.js +213 -0
- package/dist/test/history-module-semantic.test.js.map +1 -0
- package/dist/test/history-module-ux.test.d.ts +2 -0
- package/dist/test/history-module-ux.test.d.ts.map +1 -0
- package/dist/test/history-module-ux.test.js +304 -0
- package/dist/test/history-module-ux.test.js.map +1 -0
- package/dist/test/history-module.test.js +25 -1
- package/dist/test/history-module.test.js.map +1 -1
- package/dist/test/history-semantic-review-findings.test.d.ts +2 -0
- package/dist/test/history-semantic-review-findings.test.d.ts.map +1 -0
- package/dist/test/history-semantic-review-findings.test.js +338 -0
- package/dist/test/history-semantic-review-findings.test.js.map +1 -0
- package/dist/test/history-semantic-sync-converges.test.d.ts +2 -0
- package/dist/test/history-semantic-sync-converges.test.d.ts.map +1 -0
- package/dist/test/history-semantic-sync-converges.test.js +109 -0
- package/dist/test/history-semantic-sync-converges.test.js.map +1 -0
- package/dist/test/journal-tool.test.d.ts +2 -0
- package/dist/test/journal-tool.test.d.ts.map +1 -0
- package/dist/test/journal-tool.test.js +33 -0
- package/dist/test/journal-tool.test.js.map +1 -0
- package/dist/test/mcpl-capability-grant.test.js +3 -1
- package/dist/test/mcpl-capability-grant.test.js.map +1 -1
- package/dist/test/mcpl-child-env.test.d.ts +2 -0
- package/dist/test/mcpl-child-env.test.d.ts.map +1 -0
- package/dist/test/mcpl-child-env.test.js +69 -0
- package/dist/test/mcpl-child-env.test.js.map +1 -0
- package/dist/test/mcpl-coalescing.test.d.ts +2 -0
- package/dist/test/mcpl-coalescing.test.d.ts.map +1 -0
- package/dist/test/mcpl-coalescing.test.js +1050 -0
- package/dist/test/mcpl-coalescing.test.js.map +1 -0
- package/dist/test/mcpl-list-status.test.js +4 -0
- package/dist/test/mcpl-list-status.test.js.map +1 -1
- package/dist/test/mcpl-tool-class-listing.test.d.ts +2 -0
- package/dist/test/mcpl-tool-class-listing.test.d.ts.map +1 -0
- package/dist/test/mcpl-tool-class-listing.test.js +147 -0
- package/dist/test/mcpl-tool-class-listing.test.js.map +1 -0
- package/dist/test/mcpl-tool-classes.test.d.ts +7 -0
- package/dist/test/mcpl-tool-classes.test.d.ts.map +1 -0
- package/dist/test/mcpl-tool-classes.test.js +80 -0
- package/dist/test/mcpl-tool-classes.test.js.map +1 -0
- package/dist/test/mcpl-tool-lifecycle-e2e.test.d.ts +2 -0
- package/dist/test/mcpl-tool-lifecycle-e2e.test.d.ts.map +1 -0
- package/dist/test/mcpl-tool-lifecycle-e2e.test.js +237 -0
- package/dist/test/mcpl-tool-lifecycle-e2e.test.js.map +1 -0
- package/dist/test/mcpl-tool-lifecycle-emitter.test.d.ts +11 -0
- package/dist/test/mcpl-tool-lifecycle-emitter.test.d.ts.map +1 -0
- package/dist/test/mcpl-tool-lifecycle-emitter.test.js +307 -0
- package/dist/test/mcpl-tool-lifecycle-emitter.test.js.map +1 -0
- package/dist/test/mcpl-tool-lifecycle.test.d.ts +11 -0
- package/dist/test/mcpl-tool-lifecycle.test.d.ts.map +1 -0
- package/dist/test/mcpl-tool-lifecycle.test.js +270 -0
- package/dist/test/mcpl-tool-lifecycle.test.js.map +1 -0
- package/dist/test/overbudget-drain-breaker.test.js +44 -4
- package/dist/test/overbudget-drain-breaker.test.js.map +1 -1
- package/dist/test/silent-heartbeat.test.d.ts +2 -0
- package/dist/test/silent-heartbeat.test.d.ts.map +1 -0
- package/dist/test/silent-heartbeat.test.js +154 -0
- package/dist/test/silent-heartbeat.test.js.map +1 -0
- package/dist/test/tool-result-guard.test.d.ts +2 -0
- package/dist/test/tool-result-guard.test.d.ts.map +1 -0
- package/dist/test/tool-result-guard.test.js +1081 -0
- package/dist/test/tool-result-guard.test.js.map +1 -0
- package/dist/test/trunk-channel-routing.test.js +67 -0
- package/dist/test/trunk-channel-routing.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/agent.ts +128 -10
- package/src/api/types.ts +2 -0
- package/src/code-execution/py-runner.ts +34 -2
- package/src/code-execution/tool-definition.ts +46 -0
- package/src/framework.ts +1215 -91
- package/src/index.ts +13 -0
- package/src/mcpl/capability-grant.ts +54 -6
- package/src/mcpl/channel-registry.ts +170 -10
- package/src/mcpl/index.ts +29 -0
- package/src/mcpl/push-coalescer.ts +821 -0
- package/src/mcpl/push-handler.ts +40 -4
- package/src/mcpl/server-connection.ts +48 -2
- package/src/mcpl/tool-classes.ts +188 -0
- package/src/mcpl/tool-glob.ts +36 -0
- package/src/mcpl/tool-lifecycle.ts +730 -0
- package/src/mcpl/transport.ts +35 -1
- package/src/mcpl/types.ts +69 -1
- package/src/modules/discord/index.ts +1 -1
- package/src/modules/history/index.ts +1089 -24
- package/src/modules/history/semantic.ts +473 -0
- package/src/modules/index.ts +2 -1
- package/src/tool-result-guard.ts +318 -0
- package/src/types/agent.ts +15 -0
- package/src/types/framework.ts +23 -0
- package/src/types/trace.ts +17 -0
package/dist/src/index.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export { ChannelRegistry } from './mcpl/index.js';
|
|
|
21
21
|
export type { McplServerConfig } from './mcpl/index.js';
|
|
22
22
|
export { McplServerConnection } from './mcpl/index.js';
|
|
23
23
|
export type { McplHostCapabilities } from './mcpl/index.js';
|
|
24
|
+
export { TOOL_CLASSES, DEFAULT_INPUT_CLASSES, globMatch } from './mcpl/index.js';
|
|
25
|
+
export type { ToolClass, ToolClassSource, ToolLifecycleConfig, ToolLifecycleNarrowing, ToolLifecycleParams, ToolObserveRule, } from './mcpl/index.js';
|
|
24
26
|
export { ConversationRouter, DEFAULT_CLOSURE_PROMPT } from './mcpl/index.js';
|
|
25
27
|
export type { ConversationRouterConfig, ConversationBinding, RoutingDecision, IncomingMessageFacts, BindRule, TriggerRule, ChannelKind, } from './mcpl/index.js';
|
|
26
28
|
export type { ContextManager, ContextStrategy, TokenBudget } from '@animalabs/context-manager';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGjH,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EACV,eAAe,EACf,UAAU,EACV,UAAU,EACV,WAAW,EACX,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAKhD,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,gCAAgC,EAChC,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1G,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG1G,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -28,6 +28,10 @@ export { ChannelRegistry } from './mcpl/index.js';
|
|
|
28
28
|
// health probes, protocol harnesses — can dial an MCPL server exactly the
|
|
29
29
|
// way the framework host does, over stdio or WebSocket)
|
|
30
30
|
export { McplServerConnection } from './mcpl/index.js';
|
|
31
|
+
// MCPL tool lifecycle (RFC-007) and tool classes (RFC-008): the types a host
|
|
32
|
+
// needs to write McplServerConfig.toolLifecycle policy and class tables, and
|
|
33
|
+
// the portable pattern matcher both use.
|
|
34
|
+
export { TOOL_CLASSES, DEFAULT_INPUT_CLASSES, globMatch } from './mcpl/index.js';
|
|
31
35
|
// Per-channel conversation routing
|
|
32
36
|
export { ConversationRouter, DEFAULT_CLOSURE_PROMPT } from './mcpl/index.js';
|
|
33
37
|
export { PassthroughStrategy, AutobiographicalStrategy, KnowledgeStrategy } from '@animalabs/context-manager';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE1F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEjH,mBAAmB;AACnB,cAAc,oBAAoB,CAAC;AAEnC,MAAM;AACN,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAoChD,yFAAyF;AACzF,6DAA6D;AAE7D,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,8EAA8E;AAC9E,4EAA4E;AAC5E,mCAAmC;AACnC,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,gCAAgC,EAChC,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AASnC,YAAY;AACZ,OAAO,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AAGjE,iFAAiF;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMlD,0EAA0E;AAC1E,0EAA0E;AAC1E,wDAAwD;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,mCAAmC;AACnC,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAa7E,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAI9G,2EAA2E;AAC3E,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,wCAAwC,CAAC;AAQhD,yEAAyE;AACzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE1F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEjH,mBAAmB;AACnB,cAAc,oBAAoB,CAAC;AAEnC,MAAM;AACN,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAoChD,yFAAyF;AACzF,6DAA6D;AAE7D,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,8EAA8E;AAC9E,4EAA4E;AAC5E,mCAAmC;AACnC,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,gCAAgC,EAChC,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AASnC,YAAY;AACZ,OAAO,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AAGjE,iFAAiF;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMlD,0EAA0E;AAC1E,0EAA0E;AAC1E,wDAAwD;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,6EAA6E;AAC7E,6EAA6E;AAC7E,yCAAyC;AACzC,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAUjF,mCAAmC;AACnC,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAa7E,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAI9G,2EAA2E;AAC3E,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,wCAAwC,CAAC;AAQhD,yEAAyE;AACzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -105,7 +105,7 @@ export declare class CapabilityGrant {
|
|
|
105
105
|
* floor. `enabledCapabilities` config patterns can re-grant a
|
|
106
106
|
* deny-by-default path — that is the explicit decision §13.4 asks for.
|
|
107
107
|
*/
|
|
108
|
-
export declare function computeGrant(capabilities: McplCapabilities | null, config: Pick<McplServerConfig, 'enabledCapabilities'>, opts?: {
|
|
108
|
+
export declare function computeGrant(capabilities: McplCapabilities | null, config: Pick<McplServerConfig, 'enabledCapabilities' | 'toolLifecycle'>, opts?: {
|
|
109
109
|
/** §5.1: `tools` is sourced from the OUTER standard MCP
|
|
110
110
|
* `capabilities.tools` — pass its presence here. The experimental
|
|
111
111
|
* manifest cannot mint it. Without this signal, every
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-grant.d.ts","sourceRoot":"","sources":["../../../src/mcpl/capability-grant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"capability-grant.d.ts","sourceRoot":"","sources":["../../../src/mcpl/capability-grant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAiDrE,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAe9C,CAAC;AAIL;2DAC2D;AAC3D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAsBlF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAuB3G;AAMD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ/E;AAqCD,qBAAa,eAAe;IAC1B,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;gBAE5B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE;IAKvD,6DAA6D;IAC7D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,sDAAsD;IACtD,aAAa,IAAI,MAAM,EAAE;IAIzB,2CAA2C;IAC3C,OAAO,IAAI,OAAO;IAIlB,MAAM,CAAC,KAAK,IAAI,eAAe;IAI/B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe;IAIhF;;;;;OAKG;IACH,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe;CAQ7C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,gBAAgB,GAAG,IAAI,EACrC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,eAAe,CAAC,EACvE,IAAI,CAAC,EAAE;IACL;;;+DAG2D;IAC3D,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GACA,eAAe,CAuCjB"}
|
|
@@ -44,6 +44,9 @@ const VOCABULARY = {
|
|
|
44
44
|
modelInfo: null,
|
|
45
45
|
inferenceRequest: { streaming: null },
|
|
46
46
|
inferenceLifecycle: null,
|
|
47
|
+
// RFC-007: metadata observation and argument observation are separate
|
|
48
|
+
// leaves, separately granted (observation never bundles content).
|
|
49
|
+
toolLifecycle: { observe: null, inputs: null },
|
|
47
50
|
contextHooks: {
|
|
48
51
|
beforeInference: {
|
|
49
52
|
observe: null,
|
|
@@ -211,8 +214,35 @@ export function capabilityPatternMatches(pattern, path) {
|
|
|
211
214
|
// ============================================================================
|
|
212
215
|
// The grant
|
|
213
216
|
// ============================================================================
|
|
214
|
-
/** §13.4: denied unless explicitly enabled by host config.
|
|
215
|
-
|
|
217
|
+
/** §13.4: denied unless explicitly enabled by host config. RFC-007 adds both
|
|
218
|
+
* tool-lifecycle leaves: observing other servers' tool use (and, above all,
|
|
219
|
+
* their arguments) is an operator decision, never a default. */
|
|
220
|
+
const DENY_BY_DEFAULT = [
|
|
221
|
+
'contextHooks.beforeInference.inject.system',
|
|
222
|
+
'toolLifecycle.observe',
|
|
223
|
+
'toolLifecycle.inputs',
|
|
224
|
+
];
|
|
225
|
+
/**
|
|
226
|
+
* RFC-007: stating a `toolLifecycle.observe` / `.inputs` policy block in the
|
|
227
|
+
* server's config is itself the explicit grant of that path — the operator
|
|
228
|
+
* who wrote a narrowing meant to grant what it narrows.
|
|
229
|
+
*/
|
|
230
|
+
function configGrants(config, path) {
|
|
231
|
+
const key = path === 'toolLifecycle.observe' ? 'observe' : path === 'toolLifecycle.inputs' ? 'inputs' : null;
|
|
232
|
+
if (!key)
|
|
233
|
+
return false;
|
|
234
|
+
const block = config.toolLifecycle?.[key];
|
|
235
|
+
if (block === undefined)
|
|
236
|
+
return false;
|
|
237
|
+
// Only a policy OBJECT is a grant. `observe: false` (or null, or a string)
|
|
238
|
+
// must never read as "granted with no narrowing".
|
|
239
|
+
if (!isPlainObject(block)) {
|
|
240
|
+
console.error(`[mcpl] toolLifecycle.${key} is ${JSON.stringify(block)}, not a policy object — ` +
|
|
241
|
+
`not granted by this block (RFC-007 §4.1)`);
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
216
246
|
export class CapabilityGrant {
|
|
217
247
|
/** Exact granted paths (already expanded — no patterns stored). */
|
|
218
248
|
granted;
|
|
@@ -278,14 +308,28 @@ export function computeGrant(capabilities, config, opts) {
|
|
|
278
308
|
const denied = [];
|
|
279
309
|
const explicitlyEnabled = (path) => !!config.enabledCapabilities?.some((pat) => capabilityPatternMatches(pat, path));
|
|
280
310
|
for (const path of advertised) {
|
|
281
|
-
if (DENY_BY_DEFAULT.includes(path) && !explicitlyEnabled(path)) {
|
|
311
|
+
if (DENY_BY_DEFAULT.includes(path) && !explicitlyEnabled(path) && !configGrants(config, path)) {
|
|
282
312
|
denied.push(path);
|
|
283
|
-
console.error(`[mcpl] "${path}" advertised but DENIED BY DEFAULT (SPEC §13.4) — ` +
|
|
284
|
-
`grant it explicitly via enabledCapabilities if intended`);
|
|
313
|
+
console.error(`[mcpl] "${path}" advertised but DENIED BY DEFAULT (${path.startsWith('toolLifecycle.') ? 'RFC-007' : 'SPEC §13.4'}) — ` +
|
|
314
|
+
`grant it explicitly via enabledCapabilities${path.startsWith('toolLifecycle.') ? ' or a toolLifecycle policy block' : ''} if intended`);
|
|
285
315
|
continue;
|
|
286
316
|
}
|
|
287
317
|
granted.add(path);
|
|
288
318
|
}
|
|
319
|
+
// RFC-007 §4.1/§4.3 diagnostics — loud, because each is a grant that
|
|
320
|
+
// silently delivers less than the operator probably meant.
|
|
321
|
+
if (granted.has('toolLifecycle.inputs')) {
|
|
322
|
+
if (!granted.has('toolLifecycle.observe')) {
|
|
323
|
+
console.error('[mcpl] toolLifecycle.inputs granted without toolLifecycle.observe — delivers nothing (RFC-007 §4.1)');
|
|
324
|
+
}
|
|
325
|
+
const n = config.toolLifecycle?.inputs;
|
|
326
|
+
const hasTerm = isPlainObject(n) && ((Array.isArray(n.tools) && n.tools.length > 0)
|
|
327
|
+
|| n.classes === 'default' || (Array.isArray(n.classes) && n.classes.length > 0));
|
|
328
|
+
if (!hasTerm) {
|
|
329
|
+
console.error('[mcpl] toolLifecycle.inputs granted with no tools/classes narrowing — treated as narrowed to NO tools; ' +
|
|
330
|
+
'inputs is never unconditional (RFC-007 §4.3)');
|
|
331
|
+
}
|
|
332
|
+
}
|
|
289
333
|
return new CapabilityGrant(granted, denied.sort());
|
|
290
334
|
}
|
|
291
335
|
//# sourceMappingURL=capability-grant.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-grant.js","sourceRoot":"","sources":["../../../src/mcpl/capability-grant.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"capability-grant.js","sourceRoot":"","sources":["../../../src/mcpl/capability-grant.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
* - Expose synthesized tools: channel_list, channel_open, channel_close, channel_publish
|
|
13
13
|
* - Build channel context for beforeInference params
|
|
14
14
|
*/
|
|
15
|
+
import type { ContentBlock } from '@animalabs/membrane';
|
|
15
16
|
import type { JsStore } from '@animalabs/chronicle';
|
|
16
|
-
import type { ChannelDescriptor, ChannelContext, ChannelsRegisterParams, ChannelsChangedParams, ChannelsIncomingParams } from './types.js';
|
|
17
|
+
import type { ChannelDescriptor, ChannelContext, ChannelsRegisterParams, ChannelsChangedParams, ChannelsIncomingParams, ChannelIncomingMessageResult, ChannelIncomingMessage } from './types.js';
|
|
17
18
|
import type { McplServerRegistry } from './server-registry.js';
|
|
18
19
|
import type { FeatureSetManager } from './feature-set-manager.js';
|
|
19
20
|
import type { ToolDefinition, ToolResult, ProcessEvent } from '../types/index.js';
|
|
@@ -56,7 +57,38 @@ interface Responder {
|
|
|
56
57
|
respond(result: unknown): void;
|
|
57
58
|
respondError?(code: number, message: string, data?: unknown): void;
|
|
58
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Event pushed to the processing queue when an incoming channel message arrives.
|
|
62
|
+
* Uses the CustomEvent pattern (`${string}:${string}`) from ProcessEvent.
|
|
63
|
+
*/
|
|
64
|
+
interface McplChannelIncomingEvent {
|
|
65
|
+
type: 'mcpl:channel-incoming';
|
|
66
|
+
serverId: string;
|
|
67
|
+
channelId: string;
|
|
68
|
+
messageId: string;
|
|
69
|
+
threadId?: string;
|
|
70
|
+
author: {
|
|
71
|
+
id: string;
|
|
72
|
+
name: string;
|
|
73
|
+
};
|
|
74
|
+
content: ContentBlock[];
|
|
75
|
+
timestamp: string;
|
|
76
|
+
metadata?: Record<string, unknown>;
|
|
77
|
+
/** MCPL RFC-001 event tags (`chat:addressed`, `chat:ambient`, …) — carried
|
|
78
|
+
* through so the host can rank addressed messages over ambient chatter
|
|
79
|
+
* when picking a turn's frozen speech locus. */
|
|
80
|
+
tags?: string[];
|
|
81
|
+
triggerInference?: boolean;
|
|
82
|
+
targetAgents?: string[];
|
|
83
|
+
}
|
|
59
84
|
interface ChannelRegistryOptions {
|
|
85
|
+
/**
|
|
86
|
+
* RFC-006: an admitted `channels/incoming` message carrying `coalesce`, with
|
|
87
|
+
* the event the ordinary path would have queued. The handler decides
|
|
88
|
+
* replace / append / withdraw and returns the per-message result. Throws a
|
|
89
|
+
* `CoalesceError` for a malformed or unauthorized occurrence.
|
|
90
|
+
*/
|
|
91
|
+
handleCoalescedIncoming?: (serverId: string, message: ChannelIncomingMessage, event: McplChannelIncomingEvent) => Promise<ChannelIncomingMessageResult>;
|
|
60
92
|
/** Chronicle store used for durable desired channel lifecycle state. */
|
|
61
93
|
store?: JsStore;
|
|
62
94
|
/** Callback to determine whether an incoming message should trigger inference. */
|
|
@@ -213,6 +245,7 @@ export declare class ChannelRegistry {
|
|
|
213
245
|
/** One-time migration inputs from the retired recipe auto-open policy. */
|
|
214
246
|
private legacyPolicies;
|
|
215
247
|
private migratedLegacyPolicies;
|
|
248
|
+
private handleCoalescedIncoming?;
|
|
216
249
|
constructor(serverRegistry: McplServerRegistry, featureSetManager: FeatureSetManager, pushEventFn: (event: ProcessEvent) => void, emitTraceFn: (event: {
|
|
217
250
|
type: string;
|
|
218
251
|
[key: string]: unknown;
|
|
@@ -242,7 +275,7 @@ export declare class ChannelRegistry {
|
|
|
242
275
|
* Converts each message's content, pushes McplChannelIncomingEvent to the
|
|
243
276
|
* queue, and responds with per-message results.
|
|
244
277
|
*/
|
|
245
|
-
handleIncoming(serverId: string, params: ChannelsIncomingParams, responder?: Responder): void
|
|
278
|
+
handleIncoming(serverId: string, params: ChannelsIncomingParams, responder?: Responder): Promise<void>;
|
|
246
279
|
/**
|
|
247
280
|
* Ensure a channel is registered so it can serve as an outbound routing
|
|
248
281
|
* locus. A push event from a closed channel must never mutate lifecycle
|
|
@@ -283,6 +316,14 @@ export declare class ChannelRegistry {
|
|
|
283
316
|
* Get the descriptor for a channel by its channelId (first match across
|
|
284
317
|
* servers). Used by the conversation router for DM classification.
|
|
285
318
|
*/
|
|
319
|
+
/**
|
|
320
|
+
* RFC-006 §3.2: is `channelId` registered BY `serverId` through a server
|
|
321
|
+
* declaration (channels/register, channels/changed) or an authorized open?
|
|
322
|
+
* A placeholder minted from a push's `origin` (ensureChannelRegistered)
|
|
323
|
+
* does not count: a channel id appearing in an untrusted field is not a
|
|
324
|
+
* registration.
|
|
325
|
+
*/
|
|
326
|
+
isDeclaredChannel(serverId: string, channelId: string): boolean;
|
|
286
327
|
getDescriptor(channelId: string): ChannelDescriptor | undefined;
|
|
287
328
|
isChannelOpen(channelId: string): boolean;
|
|
288
329
|
getDesiredState(serverId: string, channelId: string): DesiredChannelState | undefined;
|
|
@@ -584,6 +625,22 @@ export declare class ChannelRegistry {
|
|
|
584
625
|
error: string;
|
|
585
626
|
candidates?: string[];
|
|
586
627
|
};
|
|
628
|
+
/**
|
|
629
|
+
* The `>>` target to show an agent for a channel: one whitespace-free token
|
|
630
|
+
* that `resolveProseTarget()` maps back to this same channel. The prefix
|
|
631
|
+
* grammar takes the target as the first non-whitespace run, so a label with
|
|
632
|
+
* a space can't be quoted verbatim: `>>#DM: alice` parses as target `#DM:`
|
|
633
|
+
* plus body `alice …`, and `>>#fable (antra's server)` delivers
|
|
634
|
+
* `(antra's server)` as text. Tried in order: `@name` for a DM, `#label`,
|
|
635
|
+
* `#name` (label without its server suffix), the descriptor id.
|
|
636
|
+
*
|
|
637
|
+
* Undefined when there is no safe token: the channel isn't registered (on
|
|
638
|
+
* `serverId`, when given), no candidate is whitespace-free and resolves back,
|
|
639
|
+
* or the id is registered by more than one server. A resolved target names a
|
|
640
|
+
* channel by id alone, and ids are unique only within a connection, so a
|
|
641
|
+
* shared id could route the reply through the wrong server.
|
|
642
|
+
*/
|
|
643
|
+
proseTargetFor(channelId: string, serverId?: string): string | undefined;
|
|
587
644
|
/**
|
|
588
645
|
* Open a channel because something was DELIVERED into it (explicit send
|
|
589
646
|
* tool or routed speech). Sending into a closed channel is not a thing:
|
|
@@ -607,6 +664,21 @@ export declare class ChannelRegistry {
|
|
|
607
664
|
* own context/chronicle. To deliberately not reply, the agent uses skip_reply.
|
|
608
665
|
*/
|
|
609
666
|
private handleToolThink;
|
|
667
|
+
/**
|
|
668
|
+
* Handle the synthesized `journal` tool — a private place for long-form
|
|
669
|
+
* notes. Sends nothing, does not end the turn, does not touch prose routing.
|
|
670
|
+
*
|
|
671
|
+
* Why it exists (sill, 2026-09-19): residents were keeping 2–3KB diaries in
|
|
672
|
+
* `skip_reply.reason`. Long prose in a private-REASONING tool argument
|
|
673
|
+
* (`skip_reply.reason`, `think.content`) makes replayed history read as a
|
|
674
|
+
* reasoning trace, and every memory-compression request over it is refused
|
|
675
|
+
* `reasoning_extraction` regardless of content; the same prose in a
|
|
676
|
+
* note-taking tool passes (canary record: context-manager
|
|
677
|
+
* `tool-prose-hoist.ts`, whose fallback rung rewrites old history into calls
|
|
678
|
+
* to THIS tool — so the result wording below is mirrored there as
|
|
679
|
+
* DEFAULT_TOOL_PROSE_RESULT; keep the two in step).
|
|
680
|
+
*/
|
|
681
|
+
private handleToolJournal;
|
|
610
682
|
/**
|
|
611
683
|
* Handle the synthesized `skip_reply` tool — the deliberate "stay silent"
|
|
612
684
|
* signal. A no-op as far as any surface is concerned (sends nothing); its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-registry.d.ts","sourceRoot":"","sources":["../../../src/mcpl/channel-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"channel-registry.d.ts","sourceRoot":"","sources":["../../../src/mcpl/channel-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { INLINE_WITHHELD_TEXT, isInlineContradiction, referenceStubOrNull } from './references.js';
|
|
16
16
|
import { expandCoreTags } from './tags.js';
|
|
17
|
+
import { validateCoalescedContent } from './push-coalescer.js';
|
|
17
18
|
import { CapabilityGrant } from './capability-grant.js';
|
|
18
19
|
// ============================================================================
|
|
19
20
|
// Typing indicator interval (Discord typing lasts ~10s, so 7s keeps it alive)
|
|
@@ -233,6 +234,21 @@ const CHANNEL_TOOL_DEFINITIONS = [
|
|
|
233
234
|
required: [],
|
|
234
235
|
},
|
|
235
236
|
},
|
|
237
|
+
{
|
|
238
|
+
name: 'journal',
|
|
239
|
+
description: 'Write an entry in your private journal. The entry stays in your own context and ' +
|
|
240
|
+
'memory and is NOT sent to any channel, surface or person. Use it for anything longer ' +
|
|
241
|
+
'than a line that you want to keep for yourself — reflections, what you decided and ' +
|
|
242
|
+
'why, notes for later. It does not end your turn and does not affect where ordinary ' +
|
|
243
|
+
'text is routed; to end the turn without replying, call skip_reply afterwards.',
|
|
244
|
+
inputSchema: {
|
|
245
|
+
type: 'object',
|
|
246
|
+
properties: {
|
|
247
|
+
content: { type: 'string', description: 'The journal entry (private; not sent anywhere).' },
|
|
248
|
+
},
|
|
249
|
+
required: ['content'],
|
|
250
|
+
},
|
|
251
|
+
},
|
|
236
252
|
{
|
|
237
253
|
name: 'skip_reply',
|
|
238
254
|
description: 'End your turn WITHOUT sending anything to any channel or surface. Use when you have ' +
|
|
@@ -245,7 +261,8 @@ const CHANNEL_TOOL_DEFINITIONS = [
|
|
|
245
261
|
properties: {
|
|
246
262
|
reason: {
|
|
247
263
|
type: 'string',
|
|
248
|
-
description: 'Optional
|
|
264
|
+
description: 'Optional ONE short line on why you are not replying (private; not sent anywhere). ' +
|
|
265
|
+
'Keep it under ~100 characters — put anything longer in journal() first.',
|
|
249
266
|
},
|
|
250
267
|
wake_in_seconds: {
|
|
251
268
|
type: 'number',
|
|
@@ -338,7 +355,9 @@ export class ChannelRegistry {
|
|
|
338
355
|
/** One-time migration inputs from the retired recipe auto-open policy. */
|
|
339
356
|
legacyPolicies = new Map();
|
|
340
357
|
migratedLegacyPolicies = new Set();
|
|
358
|
+
handleCoalescedIncoming;
|
|
341
359
|
constructor(serverRegistry, featureSetManager, pushEventFn, emitTraceFn, options) {
|
|
360
|
+
this.handleCoalescedIncoming = options?.handleCoalescedIncoming;
|
|
342
361
|
this.serverRegistry = serverRegistry;
|
|
343
362
|
this.featureSetManager = featureSetManager;
|
|
344
363
|
this.pushEventFn = pushEventFn;
|
|
@@ -454,7 +473,8 @@ export class ChannelRegistry {
|
|
|
454
473
|
addedResults.push({ id: channel.id, accepted: true });
|
|
455
474
|
}
|
|
456
475
|
}
|
|
457
|
-
// Process added channels (validate per-descriptor, register
|
|
476
|
+
// Process added channels (validate per-descriptor, register; reconcile
|
|
477
|
+
// after responding, below)
|
|
458
478
|
const accepted = [];
|
|
459
479
|
if (params.added) {
|
|
460
480
|
for (const channel of params.added) {
|
|
@@ -473,10 +493,16 @@ export class ChannelRegistry {
|
|
|
473
493
|
addedResults.push({ id: channel.id, accepted: true });
|
|
474
494
|
accepted.push(channel);
|
|
475
495
|
}
|
|
476
|
-
if (accepted.length > 0)
|
|
477
|
-
await this.reconcileChannels(serverId, accepted);
|
|
478
496
|
}
|
|
497
|
+
// Respond before reconciliation, as handleRegister does. A server that
|
|
498
|
+
// announces from inside a request it is serving (a tool that refreshes
|
|
499
|
+
// or subscribes) cannot read the channels/open or channels/close that
|
|
500
|
+
// reconciling sends until this response arrives; reconciling first
|
|
501
|
+
// deadlocks both sides until one times out (#160). The verdicts are
|
|
502
|
+
// settled above, so nothing in the response depends on reconciling.
|
|
479
503
|
responder?.respond({ results: addedResults });
|
|
504
|
+
if (accepted.length > 0)
|
|
505
|
+
await this.reconcileChannels(serverId, accepted);
|
|
480
506
|
this.emitTraceFn({
|
|
481
507
|
type: 'mcpl:channels-changed',
|
|
482
508
|
serverId,
|
|
@@ -491,9 +517,18 @@ export class ChannelRegistry {
|
|
|
491
517
|
* Converts each message's content, pushes McplChannelIncomingEvent to the
|
|
492
518
|
* queue, and responds with per-message results.
|
|
493
519
|
*/
|
|
494
|
-
handleIncoming(serverId, params, responder) {
|
|
520
|
+
async handleIncoming(serverId, params, responder) {
|
|
495
521
|
const results = [];
|
|
496
522
|
for (const message of params.messages) {
|
|
523
|
+
if (!message || typeof message.channelId !== 'string' || !message.channelId
|
|
524
|
+
|| typeof message.messageId !== 'string' || !message.messageId) {
|
|
525
|
+
results.push({
|
|
526
|
+
messageId: typeof message?.messageId === 'string' ? message.messageId : '',
|
|
527
|
+
accepted: false,
|
|
528
|
+
reason: message?.coalesce !== undefined ? 'coalesce_invalid' : 'invalid channel/message identity',
|
|
529
|
+
});
|
|
530
|
+
continue;
|
|
531
|
+
}
|
|
497
532
|
// §14.5 FIRST, before ANY semantic processing: admission against the
|
|
498
533
|
// actually-registered channel precedes tag expansion and content
|
|
499
534
|
// conversion — decoding an unregistered sender's payload (including
|
|
@@ -536,6 +571,18 @@ export class ChannelRegistry {
|
|
|
536
571
|
}
|
|
537
572
|
// ACCEPTED from here down: semantic processing only for admitted
|
|
538
573
|
// messages. §16.3 core-tag closure, then content conversion.
|
|
574
|
+
const coalesced = message.coalesce !== undefined && !!this.handleCoalescedIncoming;
|
|
575
|
+
if (coalesced) {
|
|
576
|
+
// RFC-006 §13: malformed content on a coalesced item is that item's
|
|
577
|
+
// failure, not the batch's — check the shape before converting.
|
|
578
|
+
try {
|
|
579
|
+
validateCoalescedContent(message.content);
|
|
580
|
+
}
|
|
581
|
+
catch (error) {
|
|
582
|
+
results.push({ messageId: message.messageId, accepted: false, reason: 'coalesce_invalid' });
|
|
583
|
+
continue;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
539
586
|
if (message.tags)
|
|
540
587
|
message.tags = expandCoreTags(message.tags);
|
|
541
588
|
const convertedContent = message.content.map(convertBlock);
|
|
@@ -543,16 +590,20 @@ export class ChannelRegistry {
|
|
|
543
590
|
// deliberately after §14.5 validation: a rejected message from an
|
|
544
591
|
// unregistered channel must not retarget outbound speech (the locus is
|
|
545
592
|
// exactly the authority a self-attested channel would be stealing).
|
|
546
|
-
|
|
547
|
-
this
|
|
548
|
-
|
|
549
|
-
|
|
593
|
+
// A coalesced item is "accepted" only once the coalescer admits it, so
|
|
594
|
+
// for those this runs after the hook (below).
|
|
595
|
+
const markAccepted = () => {
|
|
596
|
+
this.defaultPublishChannel = message.channelId;
|
|
597
|
+
this.defaultPublishMessageId = message.messageId;
|
|
598
|
+
this.defaultPublishThreadId = message.threadId;
|
|
550
599
|
// A server sending channels/incoming is authoritative evidence that
|
|
551
600
|
// the transport is actually open. This repairs transient status only;
|
|
552
601
|
// durable desired state still changes exclusively through lifecycle
|
|
553
602
|
// operations.
|
|
554
603
|
this.channels.get(incomingKey).open = true;
|
|
555
|
-
}
|
|
604
|
+
};
|
|
605
|
+
if (!coalesced)
|
|
606
|
+
markAccepted();
|
|
556
607
|
// Determine whether to trigger inference
|
|
557
608
|
let triggerInference = true;
|
|
558
609
|
if (this.shouldTriggerInference) {
|
|
@@ -585,6 +636,27 @@ export class ChannelRegistry {
|
|
|
585
636
|
...(message.tags ? { tags: message.tags } : {}),
|
|
586
637
|
triggerInference,
|
|
587
638
|
};
|
|
639
|
+
if (coalesced) {
|
|
640
|
+
// RFC-006 §14.3: a coalesced message is admitted like any other and
|
|
641
|
+
// then handed, with the event the ordinary path would have queued, to
|
|
642
|
+
// the coalescer, which replaces, appends or withdraws. Malformed
|
|
643
|
+
// `coalesce` is a per-message failure; siblings are unaffected.
|
|
644
|
+
try {
|
|
645
|
+
const result = await this.handleCoalescedIncoming(serverId, message, event);
|
|
646
|
+
if (result.accepted)
|
|
647
|
+
markAccepted();
|
|
648
|
+
results.push(result);
|
|
649
|
+
}
|
|
650
|
+
catch (error) {
|
|
651
|
+
const err = error;
|
|
652
|
+
results.push({
|
|
653
|
+
messageId: message.messageId,
|
|
654
|
+
accepted: false,
|
|
655
|
+
reason: err.code === -32602 ? 'coalesce_invalid' : err.message,
|
|
656
|
+
});
|
|
657
|
+
}
|
|
658
|
+
continue;
|
|
659
|
+
}
|
|
588
660
|
// Push to the processing queue
|
|
589
661
|
// Cast through unknown because McplChannelIncomingEvent matches the
|
|
590
662
|
// CustomEvent `${string}:${string}` type pattern but lacks an index signature.
|
|
@@ -770,6 +842,17 @@ export class ChannelRegistry {
|
|
|
770
842
|
* Get the descriptor for a channel by its channelId (first match across
|
|
771
843
|
* servers). Used by the conversation router for DM classification.
|
|
772
844
|
*/
|
|
845
|
+
/**
|
|
846
|
+
* RFC-006 §3.2: is `channelId` registered BY `serverId` through a server
|
|
847
|
+
* declaration (channels/register, channels/changed) or an authorized open?
|
|
848
|
+
* A placeholder minted from a push's `origin` (ensureChannelRegistered)
|
|
849
|
+
* does not count: a channel id appearing in an untrusted field is not a
|
|
850
|
+
* registration.
|
|
851
|
+
*/
|
|
852
|
+
isDeclaredChannel(serverId, channelId) {
|
|
853
|
+
const entry = this.channels.get(`${serverId}:${channelId}`);
|
|
854
|
+
return !!entry && !entry.descriptor.metadata?.lazyRegistered;
|
|
855
|
+
}
|
|
773
856
|
getDescriptor(channelId) {
|
|
774
857
|
return this.findChannelEntry(channelId)?.descriptor;
|
|
775
858
|
}
|
|
@@ -826,6 +909,8 @@ export class ChannelRegistry {
|
|
|
826
909
|
return this.handleToolPublish(input);
|
|
827
910
|
case 'think':
|
|
828
911
|
return this.handleToolThink(input);
|
|
912
|
+
case 'journal':
|
|
913
|
+
return this.handleToolJournal(input);
|
|
829
914
|
case 'skip_reply':
|
|
830
915
|
return this.handleToolSkipReply(input);
|
|
831
916
|
default:
|
|
@@ -1845,6 +1930,46 @@ export class ChannelRegistry {
|
|
|
1845
1930
|
.map((e) => `${e.descriptor.label} = ${e.descriptor.id}`);
|
|
1846
1931
|
return { error: `no channel matches "${trimmed}"`, ...(near.length ? { candidates: near } : {}) };
|
|
1847
1932
|
}
|
|
1933
|
+
/**
|
|
1934
|
+
* The `>>` target to show an agent for a channel: one whitespace-free token
|
|
1935
|
+
* that `resolveProseTarget()` maps back to this same channel. The prefix
|
|
1936
|
+
* grammar takes the target as the first non-whitespace run, so a label with
|
|
1937
|
+
* a space can't be quoted verbatim: `>>#DM: alice` parses as target `#DM:`
|
|
1938
|
+
* plus body `alice …`, and `>>#fable (antra's server)` delivers
|
|
1939
|
+
* `(antra's server)` as text. Tried in order: `@name` for a DM, `#label`,
|
|
1940
|
+
* `#name` (label without its server suffix), the descriptor id.
|
|
1941
|
+
*
|
|
1942
|
+
* Undefined when there is no safe token: the channel isn't registered (on
|
|
1943
|
+
* `serverId`, when given), no candidate is whitespace-free and resolves back,
|
|
1944
|
+
* or the id is registered by more than one server. A resolved target names a
|
|
1945
|
+
* channel by id alone, and ids are unique only within a connection, so a
|
|
1946
|
+
* shared id could route the reply through the wrong server.
|
|
1947
|
+
*/
|
|
1948
|
+
proseTargetFor(channelId, serverId) {
|
|
1949
|
+
const sameId = [...this.channels.values()].filter((e) => e.descriptor.id === channelId);
|
|
1950
|
+
const entry = serverId ? sameId.find((e) => e.serverId === serverId) : sameId[0];
|
|
1951
|
+
if (!entry || sameId.length > 1)
|
|
1952
|
+
return undefined;
|
|
1953
|
+
const d = entry.descriptor;
|
|
1954
|
+
const label = d.label ?? '';
|
|
1955
|
+
const meta = d.metadata;
|
|
1956
|
+
const isDm = meta?.channelType === 'dm' || label.toLowerCase().startsWith('dm: ') || d.id.includes(':dm:');
|
|
1957
|
+
const dmName = meta?.recipientName ?? (label.toLowerCase().startsWith('dm: ') ? label.slice(4) : undefined);
|
|
1958
|
+
const bare = label.replace(/^#/, '');
|
|
1959
|
+
const candidates = [
|
|
1960
|
+
...(isDm && dmName ? [`@${dmName}`] : []),
|
|
1961
|
+
...(bare ? [`#${bare}`, `#${bare.replace(/\s*\([^)]*\)\s*$/, '')}`] : []),
|
|
1962
|
+
d.id,
|
|
1963
|
+
];
|
|
1964
|
+
for (const c of candidates) {
|
|
1965
|
+
if (/\s/.test(c) || c === '#')
|
|
1966
|
+
continue;
|
|
1967
|
+
const r = this.resolveProseTarget(c);
|
|
1968
|
+
if ('channelId' in r && r.channelId === d.id)
|
|
1969
|
+
return c;
|
|
1970
|
+
}
|
|
1971
|
+
return undefined;
|
|
1972
|
+
}
|
|
1848
1973
|
/**
|
|
1849
1974
|
* Open a channel because something was DELIVERED into it (explicit send
|
|
1850
1975
|
* tool or routed speech). Sending into a closed channel is not a thing:
|
|
@@ -2117,6 +2242,27 @@ export class ChannelRegistry {
|
|
|
2117
2242
|
},
|
|
2118
2243
|
};
|
|
2119
2244
|
}
|
|
2245
|
+
/**
|
|
2246
|
+
* Handle the synthesized `journal` tool — a private place for long-form
|
|
2247
|
+
* notes. Sends nothing, does not end the turn, does not touch prose routing.
|
|
2248
|
+
*
|
|
2249
|
+
* Why it exists (sill, 2026-09-19): residents were keeping 2–3KB diaries in
|
|
2250
|
+
* `skip_reply.reason`. Long prose in a private-REASONING tool argument
|
|
2251
|
+
* (`skip_reply.reason`, `think.content`) makes replayed history read as a
|
|
2252
|
+
* reasoning trace, and every memory-compression request over it is refused
|
|
2253
|
+
* `reasoning_extraction` regardless of content; the same prose in a
|
|
2254
|
+
* note-taking tool passes (canary record: context-manager
|
|
2255
|
+
* `tool-prose-hoist.ts`, whose fallback rung rewrites old history into calls
|
|
2256
|
+
* to THIS tool — so the result wording below is mirrored there as
|
|
2257
|
+
* DEFAULT_TOOL_PROSE_RESULT; keep the two in step).
|
|
2258
|
+
*/
|
|
2259
|
+
handleToolJournal(_input) {
|
|
2260
|
+
return {
|
|
2261
|
+
success: true,
|
|
2262
|
+
// No echo: the entry is already in the tool_use block.
|
|
2263
|
+
data: { recorded: true, note: 'Journal entry recorded (private — not sent anywhere).' },
|
|
2264
|
+
};
|
|
2265
|
+
}
|
|
2120
2266
|
/**
|
|
2121
2267
|
* Handle the synthesized `skip_reply` tool — the deliberate "stay silent"
|
|
2122
2268
|
* signal. A no-op as far as any surface is concerned (sends nothing); its
|