IntentPolicy
KIT · interface · 类型合同
Registration rules for one intent registry.
导入
ts
import type { IntentPolicy } from '@jangts/agent-core/kits/domains';js
/** @typedef {import('@jangts/agent-core/kits/domains').IntentPolicy} IntentPolicy */其他公开入口:@jangts/agent-core、@jangts/agent-core/types、@jangts/agent-core/structs、@jangts/agent-core/kits/domains、@jangts/agent-core/kits。
定义
ts
interface IntentPolicy<Definition>泛型参数
| 类型参数 | 约束 | 默认类型 |
|---|---|---|
Definition | IntentToolRegistration | — |
字段结构
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
idPattern | RegExp | undefined | 可省略 | 只读。Pattern every Tool id must match. |
scopeModes | readonly string[] | undefined | 可省略 | 只读。Allowed scopePolicy values; undefined accepts any value. |
targetModes | readonly string[] | undefined | 可省略 | 只读。Allowed targetPolicy values; undefined accepts any value. |
contextTiers | readonly string[] | undefined | 可省略 | 只读。Allowed contextTier values; undefined accepts any value. |
actions | readonly string[] | undefined | 可省略 | 只读。Allowed planIntent values; undefined accepts any value. |
delegates | readonly string[] | undefined | 可省略 | 只读。Allowed delegate ids; undefined accepts any non-empty delegate. |
handoffValues | readonly unknown[] | undefined | 可省略 | 只读。Allowed preparedHandoff values; undefined accepts any value. |
assertDefinition | ((definition: Definition) => void) | undefined | 可省略 | 只读。Extra App assertion, called after the built-in checks; must return void synchronously. |
tags | readonly string[] | undefined | 可省略 | 只读。Diagnostic tags attached to registration rejections. |
errors | { readonly sealed?: BreakReason; readonly invalid?: BreakReason; readonly duplicate?: (goal: string) => Error | string; } | undefined | 可省略 | 只读。见类型定义及调用场景。 |
使用示例
- Domain Tools:Tool 声明与范围关系:同一清单提供可用 Tool、允许 delegate、范围别名、来源和工具关系。
先登记一个接口说明 Tool
入门 · Node.js
ts
import { IntentRegistry, ScopeRegistry } from '@jangts/agent-core/kits/domains';
const tools = IntentRegistry.create([
{ id: 'explain', description: '根据资料解释 SDK', delegates: ['read', 'reply'], asIntent: true },
]);
console.log(tools.ids(), tools.allows('explain', 'read'));
const scopes = ScopeRegistry.create([
{ id: 'sdk', description: 'SDK 说明资料', category: 'knowledge' },
]);
console.log(scopes.require('sdk').knowledgeTopicIds);js
import { IntentRegistry, ScopeRegistry } from '@jangts/agent-core/kits/domains';
const tools = IntentRegistry.create([
{ id: 'explain', description: '根据资料解释 SDK', delegates: ['read', 'reply'], asIntent: true },
]);
console.log(tools.ids(), tools.allows('explain', 'read'));
const scopes = ScopeRegistry.create([
{ id: 'sdk', description: 'SDK 说明资料', category: 'knowledge' },
]);
console.log(scopes.require('sdk').knowledgeTopicIds);增加约束和范围关联,查询入口保持一致
配置 · Node.js
ts
import { IntentRegistry, ScopeRegistry } from '@jangts/agent-core/kits/domains';
const tools = new IntentRegistry({ idPattern: /^[a-z-]+$/, delegates: ['read', 'reply'] })
.registerAll([{ id: 'explain', description: '根据资料解释 SDK', delegates: ['read', 'reply'], asIntent: '用户希望了解 SDK 接口或用法。' }]).seal();
const scopes = ScopeRegistry.create([
{ id: 'sdk', description: 'SDK 说明资料', category: 'knowledge', aliases: ['agent-core'], goalIds: ['explain'], knowledgeTopicIds: ['manual'], toolIds: ['read-source'] },
], { categories: ['knowledge'], requireGoals: true, requireSources: true });
console.log(tools.describe(), scopes.normalize('agent-core'));
console.log(scopes.acceptsTool('agent-core', 'explain'), scopes.topics('sdk'));js
import { IntentRegistry, ScopeRegistry } from '@jangts/agent-core/kits/domains';
const tools = new IntentRegistry({ idPattern: /^[a-z-]+$/, delegates: ['read', 'reply'] })
.registerAll([{ id: 'explain', description: '根据资料解释 SDK', delegates: ['read', 'reply'], asIntent: '用户希望了解 SDK 接口或用法。' }]).seal();
const scopes = ScopeRegistry.create([
{ id: 'sdk', description: 'SDK 说明资料', category: 'knowledge', aliases: ['agent-core'], goalIds: ['explain'], knowledgeTopicIds: ['manual'], toolIds: ['read-source'] },
], { categories: ['knowledge'], requireGoals: true, requireSources: true });
console.log(tools.describe(), scopes.normalize('agent-core'));
console.log(scopes.acceptsTool('agent-core', 'explain'), scopes.topics('sdk'));