@animalabs/agent-framework 0.19.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 +153 -2
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +1169 -76
- 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 +59 -2
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +106 -6
- 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/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/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/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 +1201 -80
- package/src/index.ts +13 -0
- package/src/mcpl/capability-grant.ts +54 -6
- package/src/mcpl/channel-registry.ts +115 -7
- 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:
|
|
@@ -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)
|
|
@@ -354,7 +355,9 @@ export class ChannelRegistry {
|
|
|
354
355
|
/** One-time migration inputs from the retired recipe auto-open policy. */
|
|
355
356
|
legacyPolicies = new Map();
|
|
356
357
|
migratedLegacyPolicies = new Set();
|
|
358
|
+
handleCoalescedIncoming;
|
|
357
359
|
constructor(serverRegistry, featureSetManager, pushEventFn, emitTraceFn, options) {
|
|
360
|
+
this.handleCoalescedIncoming = options?.handleCoalescedIncoming;
|
|
358
361
|
this.serverRegistry = serverRegistry;
|
|
359
362
|
this.featureSetManager = featureSetManager;
|
|
360
363
|
this.pushEventFn = pushEventFn;
|
|
@@ -514,9 +517,18 @@ export class ChannelRegistry {
|
|
|
514
517
|
* Converts each message's content, pushes McplChannelIncomingEvent to the
|
|
515
518
|
* queue, and responds with per-message results.
|
|
516
519
|
*/
|
|
517
|
-
handleIncoming(serverId, params, responder) {
|
|
520
|
+
async handleIncoming(serverId, params, responder) {
|
|
518
521
|
const results = [];
|
|
519
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
|
+
}
|
|
520
532
|
// §14.5 FIRST, before ANY semantic processing: admission against the
|
|
521
533
|
// actually-registered channel precedes tag expansion and content
|
|
522
534
|
// conversion — decoding an unregistered sender's payload (including
|
|
@@ -559,6 +571,18 @@ export class ChannelRegistry {
|
|
|
559
571
|
}
|
|
560
572
|
// ACCEPTED from here down: semantic processing only for admitted
|
|
561
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
|
+
}
|
|
562
586
|
if (message.tags)
|
|
563
587
|
message.tags = expandCoreTags(message.tags);
|
|
564
588
|
const convertedContent = message.content.map(convertBlock);
|
|
@@ -566,16 +590,20 @@ export class ChannelRegistry {
|
|
|
566
590
|
// deliberately after §14.5 validation: a rejected message from an
|
|
567
591
|
// unregistered channel must not retarget outbound speech (the locus is
|
|
568
592
|
// exactly the authority a self-attested channel would be stealing).
|
|
569
|
-
|
|
570
|
-
this
|
|
571
|
-
|
|
572
|
-
|
|
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;
|
|
573
599
|
// A server sending channels/incoming is authoritative evidence that
|
|
574
600
|
// the transport is actually open. This repairs transient status only;
|
|
575
601
|
// durable desired state still changes exclusively through lifecycle
|
|
576
602
|
// operations.
|
|
577
603
|
this.channels.get(incomingKey).open = true;
|
|
578
|
-
}
|
|
604
|
+
};
|
|
605
|
+
if (!coalesced)
|
|
606
|
+
markAccepted();
|
|
579
607
|
// Determine whether to trigger inference
|
|
580
608
|
let triggerInference = true;
|
|
581
609
|
if (this.shouldTriggerInference) {
|
|
@@ -608,6 +636,27 @@ export class ChannelRegistry {
|
|
|
608
636
|
...(message.tags ? { tags: message.tags } : {}),
|
|
609
637
|
triggerInference,
|
|
610
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
|
+
}
|
|
611
660
|
// Push to the processing queue
|
|
612
661
|
// Cast through unknown because McplChannelIncomingEvent matches the
|
|
613
662
|
// CustomEvent `${string}:${string}` type pattern but lacks an index signature.
|
|
@@ -793,6 +842,17 @@ export class ChannelRegistry {
|
|
|
793
842
|
* Get the descriptor for a channel by its channelId (first match across
|
|
794
843
|
* servers). Used by the conversation router for DM classification.
|
|
795
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
|
+
}
|
|
796
856
|
getDescriptor(channelId) {
|
|
797
857
|
return this.findChannelEntry(channelId)?.descriptor;
|
|
798
858
|
}
|
|
@@ -1870,6 +1930,46 @@ export class ChannelRegistry {
|
|
|
1870
1930
|
.map((e) => `${e.descriptor.label} = ${e.descriptor.id}`);
|
|
1871
1931
|
return { error: `no channel matches "${trimmed}"`, ...(near.length ? { candidates: near } : {}) };
|
|
1872
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
|
+
}
|
|
1873
1973
|
/**
|
|
1874
1974
|
* Open a channel because something was DELIVERED into it (explicit send
|
|
1875
1975
|
* tool or routed speech). Sending into a closed channel is not a thing:
|