@absolutejs/agent 0.28.1 → 0.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/changelog.json +16 -0
- package/dist/actions.js +4 -4
- package/dist/actions.js.map +1 -1
- package/dist/authAgency.js +4 -4
- package/dist/authAgency.js.map +1 -1
- package/dist/commerce.js +7 -7
- package/dist/commerce.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/migrations.js +3 -3
- package/dist/migrations.js.map +1 -1
- package/package.json +11 -7
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@absolutejs/agent`.
|
|
4
|
+
|
|
5
|
+
This file is generated by `absolute-changelog` from the entries in
|
|
6
|
+
`changelog/`. Edit an entry, not this file — and add new ones under
|
|
7
|
+
`changelog/unreleased/`.
|
|
8
|
+
|
|
9
|
+
## 0.29.1 — 2026-09-11
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **Expose MCP host commerce guards and credit balance tools through the agent umbrella**
|
package/changelog.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contract": 1,
|
|
3
|
+
"name": "@absolutejs/agent",
|
|
4
|
+
"releases": [
|
|
5
|
+
{
|
|
6
|
+
"changes": [
|
|
7
|
+
{
|
|
8
|
+
"kind": "added",
|
|
9
|
+
"summary": "Expose MCP host commerce guards and credit balance tools through the agent umbrella"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"date": "2026-09-11",
|
|
13
|
+
"version": "0.29.1"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
package/dist/actions.js
CHANGED
|
@@ -56,11 +56,11 @@ var createAuthAgencyDelegationAuthority = (options) => ({
|
|
|
56
56
|
// src/actions.ts
|
|
57
57
|
export * from "@absolutejs/agency";
|
|
58
58
|
export {
|
|
59
|
-
|
|
60
|
-
authAgencyAuthorizationDetail,
|
|
59
|
+
AUTH_AGENCY_AUTHORIZATION_DETAIL_TYPE,
|
|
61
60
|
AuthAgencyAuthorizationDetailSchema,
|
|
62
|
-
|
|
61
|
+
authAgencyAuthorizationDetail,
|
|
62
|
+
createAuthAgencyDelegationAuthority
|
|
63
63
|
};
|
|
64
64
|
|
|
65
|
-
//# debugId=
|
|
65
|
+
//# debugId=5C44C0FFC6896C4864756E2164756E21
|
|
66
66
|
//# sourceMappingURL=actions.js.map
|
package/dist/actions.js.map
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"export * from \"@absolutejs/agency\";\nexport * from \"./authAgency\";\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": "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",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "5C44C0FFC6896C4864756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/dist/authAgency.js
CHANGED
|
@@ -53,11 +53,11 @@ var createAuthAgencyDelegationAuthority = (options) => ({
|
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
55
|
export {
|
|
56
|
-
|
|
57
|
-
authAgencyAuthorizationDetail,
|
|
56
|
+
AUTH_AGENCY_AUTHORIZATION_DETAIL_TYPE,
|
|
58
57
|
AuthAgencyAuthorizationDetailSchema,
|
|
59
|
-
|
|
58
|
+
authAgencyAuthorizationDetail,
|
|
59
|
+
createAuthAgencyDelegationAuthority
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
//# debugId=
|
|
62
|
+
//# debugId=AE871F29ABC34B1A64756E2164756E21
|
|
63
63
|
//# sourceMappingURL=authAgency.js.map
|
package/dist/authAgency.js.map
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import type { ActionRequestInput } from \"@absolutejs/agency\";\nimport type {\n AgentDelegation,\n AgentDelegationStore,\n} from \"@absolutejs/auth/agents\";\nimport { Type, type Static } from \"@sinclair/typebox\";\nimport { Value } from \"@sinclair/typebox/value\";\n\nexport const AUTH_AGENCY_AUTHORIZATION_DETAIL_TYPE =\n \"urn:absolutejs:authorization-detail:agency-delegation\";\n\nexport const AuthAgencyAuthorizationDetailSchema = Type.Object(\n {\n actions: Type.Array(Type.String({ minLength: 1 }), { minItems: 1 }),\n audience: Type.String({ minLength: 1 }),\n effects: Type.Array(Type.String({ minLength: 1 }), { minItems: 1 }),\n resourceIds: Type.Optional(\n Type.Array(Type.String({ minLength: 1 }), { minItems: 1 }),\n ),\n resourceTypes: Type.Array(Type.String({ minLength: 1 }), { minItems: 1 }),\n type: Type.Literal(AUTH_AGENCY_AUTHORIZATION_DETAIL_TYPE),\n },\n { additionalProperties: false },\n);\n\nexport type AuthAgencyAuthorizationDetail = Static<\n typeof AuthAgencyAuthorizationDetailSchema\n>;\n\nexport const authAgencyAuthorizationDetail = (\n detail: Omit<AuthAgencyAuthorizationDetail, \"type\">,\n): AuthAgencyAuthorizationDetail => ({\n ...detail,\n type: AUTH_AGENCY_AUTHORIZATION_DETAIL_TYPE,\n});\n\nconst subset = (required: readonly string[], available: readonly string[]) =>\n required.every((value) => available.includes(value));\n\nconst audienceOf = (action: ActionRequestInput) => {\n const audience = action.context?.audience;\n\n return typeof audience === \"string\" ? audience : undefined;\n};\n\nconst activeDelegation = async (\n store: AgentDelegationStore,\n action: ActionRequestInput,\n now: number,\n) => {\n const { delegationId } = action.actor;\n\n if (!delegationId) throw new Error(\"Agency action requires a delegation\");\n const delegation = await store.findByDelegationId(delegationId);\n\n if (!delegation) throw new Error(\"Unknown authenticated delegation\");\n if (delegation.status !== \"active\")\n throw new Error(\"Authenticated delegation is revoked\");\n if (delegation.expiresAt !== undefined && delegation.expiresAt <= now)\n throw new Error(\"Authenticated delegation is expired\");\n\n return delegation;\n};\n\nconst assertActor = (\n action: ActionRequestInput,\n delegation: AgentDelegation,\n) => {\n if (\n action.actor.agentId !== delegation.agentId ||\n action.actor.userId !== delegation.userId ||\n action.actor.organizationId !== delegation.organizationId\n )\n throw new Error(\"Agency actor does not match authenticated delegation\");\n if (!subset(action.actor.scopes, delegation.scopes))\n throw new Error(\"Agency actor scopes exceed authenticated delegation\");\n};\n\nconst authorizationDetails = (delegation: AgentDelegation) =>\n (delegation.authorizationDetails ?? []).filter(\n (detail): detail is AuthAgencyAuthorizationDetail =>\n Value.Check(AuthAgencyAuthorizationDetailSchema, detail),\n );\n\nconst detailAllows = (\n detail: AuthAgencyAuthorizationDetail,\n action: ActionRequestInput,\n) =>\n detail.audience === audienceOf(action) &&\n detail.actions.includes(action.action) &&\n subset(action.effects, detail.effects) &&\n detail.resourceTypes.includes(action.resource.type) &&\n (!detail.resourceIds || detail.resourceIds.includes(action.resource.id));\n\n/** Bridges Absolute Auth's verified principal grant directly into Agency.\n * The same delegation ID is re-read at request, lease, and execution time; no\n * shadow grant or manual synchronization is required. */\nexport const createAuthAgencyDelegationAuthority = (options: {\n now?: () => number;\n store: AgentDelegationStore;\n}) => ({\n assertAllows: async (action: ActionRequestInput) => {\n const delegation = await activeDelegation(\n options.store,\n action,\n (options.now ?? Date.now)(),\n );\n assertActor(action, delegation);\n if (\n !authorizationDetails(delegation).some((detail) =>\n detailAllows(detail, action),\n )\n )\n throw new Error(\"Agency action is outside authenticated delegation\");\n\n return {\n ...(delegation.expiresAt === undefined\n ? {}\n : { expiresAt: delegation.expiresAt }),\n };\n },\n});\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "AE871F29ABC34B1A64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/commerce.js
CHANGED
|
@@ -321,14 +321,14 @@ var createAgentPurchaseOrchestrator = (options) => {
|
|
|
321
321
|
};
|
|
322
322
|
};
|
|
323
323
|
export {
|
|
324
|
-
|
|
325
|
-
createMemoryAgentPurchaseIntentStore,
|
|
326
|
-
createDrizzleAgentPurchaseIntentStore,
|
|
327
|
-
createAgentPurchaseOrchestrator,
|
|
328
|
-
agentPurchaseIntentsPostgresSchemaSql,
|
|
324
|
+
AgentPurchaseIntentError,
|
|
329
325
|
agentPurchaseIntentDrizzleSchema,
|
|
330
|
-
|
|
326
|
+
agentPurchaseIntentsPostgresSchemaSql,
|
|
327
|
+
createAgentPurchaseOrchestrator,
|
|
328
|
+
createDrizzleAgentPurchaseIntentStore,
|
|
329
|
+
createMemoryAgentPurchaseIntentStore,
|
|
330
|
+
createPostgresAgentPurchaseIntentStore
|
|
331
331
|
};
|
|
332
332
|
|
|
333
|
-
//# debugId=
|
|
333
|
+
//# debugId=7F4B51ACBEFD6ECE64756E2164756E21
|
|
334
334
|
//# sourceMappingURL=commerce.js.map
|
package/dist/commerce.js.map
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import {\n effectAdapterExecutionInputDigest,\n type EffectAdapterCredentialInstallation,\n type EffectAdapterExecutionEnvelope,\n type EffectAdapterInstallationRegistry,\n type EffectRecord,\n type EffectStore,\n type ExecutionSqlClient,\n} from \"@absolutejs/execution\";\nimport type {\n AgentSpendRequest,\n SpendRequestResult,\n SpendMandate,\n} from \"@absolutejs/wallet\";\nimport { and, desc, eq, sql, type SQL } from \"drizzle-orm\";\nimport {\n bigint,\n customType,\n index,\n pgSchema,\n text,\n uniqueIndex,\n type PgAsyncDatabase,\n} from \"drizzle-orm/pg-core\";\n\nexport type AgentPurchaseIntentStatus =\n | \"drafted\"\n | \"pending_approval\"\n | \"mandate_ready\"\n | \"installation_ready\"\n | \"enqueued\"\n | \"cancelled\";\n\nexport type AgentPurchaseIntentInput<Payload = unknown> = {\n actionId: string;\n adapterId: string;\n agentId: string;\n allowanceId: string;\n amountMinor: number;\n category?: string;\n credentials?: ReadonlyArray<EffectAdapterCredentialInstallation>;\n currency: string;\n destination?: string;\n effect: string;\n expiresAt: string;\n handler: string;\n idempotencyKey: string;\n installationId: string;\n merchantId: string;\n ownerId: string;\n payload: Payload;\n purchaseId: string;\n refundable?: boolean;\n tenantId: string;\n};\n\nexport type AgentPurchaseIntent<Payload = unknown> = {\n createdAt: number;\n effectId: string;\n envelope: EffectAdapterExecutionEnvelope<Payload>;\n input: AgentPurchaseIntentInput<Payload>;\n inputDigest: string;\n mandate?: Omit<SpendMandate, \"signature\">;\n mandateId: string;\n status: AgentPurchaseIntentStatus;\n updatedAt: number;\n};\n\nexport type AgentPurchaseIntentStore = {\n get: (\n tenantId: string,\n purchaseId: string,\n ) => Promise<AgentPurchaseIntent | undefined>;\n getByIdempotencyKey: (\n tenantId: string,\n idempotencyKey: string,\n ) => Promise<AgentPurchaseIntent | undefined>;\n list: (input: {\n limit: number;\n ownerId?: string;\n status?: AgentPurchaseIntentStatus;\n tenantId?: string;\n }) => Promise<AgentPurchaseIntent[]>;\n save: (intent: AgentPurchaseIntent) => Promise<void>;\n};\n\nexport class AgentPurchaseIntentError extends Error {}\n\nconst keyOf = (tenantId: string, purchaseId: string) =>\n `${tenantId}\\u0000${purchaseId}`;\n\nexport const createMemoryAgentPurchaseIntentStore =\n (): AgentPurchaseIntentStore => {\n const records = new Map<string, AgentPurchaseIntent>();\n return {\n get: async (tenantId, purchaseId) => {\n const value = records.get(keyOf(tenantId, purchaseId));\n return value ? structuredClone(value) : undefined;\n },\n getByIdempotencyKey: async (tenantId, idempotencyKey) => {\n const value = [...records.values()].find(\n (intent) =>\n intent.input.tenantId === tenantId &&\n intent.input.idempotencyKey === idempotencyKey,\n );\n return value ? structuredClone(value) : undefined;\n },\n list: async (input) =>\n [...records.values()]\n .filter(\n ({ input: intent, status }) =>\n (!input.tenantId || intent.tenantId === input.tenantId) &&\n (!input.ownerId || intent.ownerId === input.ownerId) &&\n (!input.status || status === input.status),\n )\n .sort((left, right) => right.createdAt - left.createdAt)\n .slice(0, input.limit)\n .map((value) => structuredClone(value)),\n save: async (intent) => {\n const key = keyOf(intent.input.tenantId, intent.input.purchaseId);\n const existing = records.get(key);\n if (existing && existing.inputDigest !== intent.inputDigest)\n throw new AgentPurchaseIntentError(\n \"Purchase identity belongs to another immutable request\",\n );\n const idempotent = [...records.values()].find(\n ({ input }) =>\n input.tenantId === intent.input.tenantId &&\n input.idempotencyKey === intent.input.idempotencyKey,\n );\n if (\n idempotent &&\n idempotent.input.purchaseId !== intent.input.purchaseId\n )\n throw new AgentPurchaseIntentError(\n \"Purchase idempotency key belongs to another request\",\n );\n records.set(key, structuredClone(intent));\n },\n };\n };\n\nconst namespaceOf = (namespace: string) => {\n if (!/^[a-z_][a-z0-9_]*$/.test(namespace))\n throw new AgentPurchaseIntentError(\n \"Purchase intent namespace must be a simple identifier\",\n );\n return namespace;\n};\n\ntype AnyPgDatabase = PgAsyncDatabase<any, any>;\nconst portableJsonb = customType<{ data: unknown; driverData: unknown }>({\n dataType: () => \"jsonb\",\n fromDriver: (value) =>\n typeof value === \"string\" ? JSON.parse(value) : value,\n toDriver: (value) => JSON.stringify(value),\n});\nconst encodedJsonb = <Value>(value: Value) =>\n sql<Value>`${JSON.stringify(value)}::text::jsonb`;\n\nexport const agentPurchaseIntentDrizzleSchema = (\n namespace = \"agent_commerce\",\n) => {\n const schema = pgSchema(namespaceOf(namespace));\n const purchaseIntents = schema.table(\n \"purchase_intents\",\n {\n created_at: bigint({ mode: \"number\" }).notNull(),\n data: portableJsonb().$type<AgentPurchaseIntent>().notNull(),\n idempotency_key: text().notNull(),\n input_digest: text().notNull(),\n owner_id: text().notNull(),\n purchase_id: text().primaryKey(),\n status: text().$type<AgentPurchaseIntentStatus>().notNull(),\n tenant_id: text().notNull(),\n updated_at: bigint({ mode: \"number\" }).notNull(),\n },\n (table) => [\n uniqueIndex(\"purchase_intents_tenant_idempotency_idx\").on(\n table.tenant_id,\n table.idempotency_key,\n ),\n uniqueIndex(\"purchase_intents_tenant_purchase_idx\").on(\n table.tenant_id,\n table.purchase_id,\n ),\n index(\"purchase_intents_inventory_idx\").on(\n table.tenant_id,\n table.created_at.desc(),\n ),\n index(\"purchase_intents_owner_idx\").on(\n table.owner_id,\n table.created_at.desc(),\n ),\n ],\n );\n\n return { purchaseIntents };\n};\n\nexport const createDrizzleAgentPurchaseIntentStore = <DB extends AnyPgDatabase>(\n db: DB,\n options: { namespace?: string } = {},\n): AgentPurchaseIntentStore => {\n const { purchaseIntents } = agentPurchaseIntentDrizzleSchema(\n options.namespace,\n );\n const first = async (conditions: SQL[]) => {\n const [row] = await db\n .select({ data: purchaseIntents.data })\n .from(purchaseIntents)\n .where(and(...conditions))\n .limit(1);\n\n return row?.data;\n };\n\n return {\n get: (tenantId, purchaseId) =>\n first([\n eq(purchaseIntents.tenant_id, tenantId),\n eq(purchaseIntents.purchase_id, purchaseId),\n ]),\n getByIdempotencyKey: (tenantId, idempotencyKey) =>\n first([\n eq(purchaseIntents.tenant_id, tenantId),\n eq(purchaseIntents.idempotency_key, idempotencyKey),\n ]),\n list: async (input) => {\n const conditions: SQL[] = [];\n if (input.tenantId)\n conditions.push(eq(purchaseIntents.tenant_id, input.tenantId));\n if (input.ownerId)\n conditions.push(eq(purchaseIntents.owner_id, input.ownerId));\n if (input.status)\n conditions.push(eq(purchaseIntents.status, input.status));\n\n const rows = await db\n .select({ data: purchaseIntents.data })\n .from(purchaseIntents)\n .where(and(...conditions))\n .orderBy(desc(purchaseIntents.created_at))\n .limit(input.limit);\n\n return rows.map(({ data }) => data);\n },\n save: async (intent) => {\n const rows = await db\n .insert(purchaseIntents)\n .values({\n created_at: intent.createdAt,\n data: encodedJsonb(intent),\n idempotency_key: intent.input.idempotencyKey,\n input_digest: intent.inputDigest,\n owner_id: intent.input.ownerId,\n purchase_id: intent.input.purchaseId,\n status: intent.status,\n tenant_id: intent.input.tenantId,\n updated_at: intent.updatedAt,\n })\n .onConflictDoUpdate({\n set: {\n data: encodedJsonb(intent),\n status: intent.status,\n updated_at: intent.updatedAt,\n },\n setWhere: and(\n eq(purchaseIntents.tenant_id, intent.input.tenantId),\n eq(purchaseIntents.input_digest, intent.inputDigest),\n eq(purchaseIntents.idempotency_key, intent.input.idempotencyKey),\n ),\n target: purchaseIntents.purchase_id,\n })\n .returning({ id: purchaseIntents.purchase_id });\n if (rows.length !== 1)\n throw new AgentPurchaseIntentError(\n \"Purchase identity belongs to another immutable request\",\n );\n },\n };\n};\n\nexport const agentPurchaseIntentsPostgresSchemaSql = (\n namespace = \"agent_commerce\",\n) => {\n const ns = namespaceOf(namespace);\n return `CREATE SCHEMA IF NOT EXISTS ${ns};\nCREATE TABLE IF NOT EXISTS ${ns}.purchase_intents (\n purchase_id text PRIMARY KEY,\n tenant_id text NOT NULL,\n owner_id text NOT NULL,\n idempotency_key text NOT NULL,\n status text NOT NULL,\n input_digest text NOT NULL,\n data jsonb NOT NULL,\n created_at bigint NOT NULL,\n updated_at bigint NOT NULL,\n UNIQUE (tenant_id, idempotency_key),\n UNIQUE (tenant_id, purchase_id)\n);\nCREATE INDEX IF NOT EXISTS purchase_intents_inventory_idx ON ${ns}.purchase_intents (tenant_id, created_at DESC);\nCREATE INDEX IF NOT EXISTS purchase_intents_owner_idx ON ${ns}.purchase_intents (owner_id, created_at DESC);`;\n};\n\ntype AgentPurchaseIntentRow = { data: AgentPurchaseIntent | string };\nconst parseRow = (row: AgentPurchaseIntentRow | undefined) => {\n if (!row) return undefined;\n return (\n typeof row.data === \"string\" ? JSON.parse(row.data) : row.data\n ) as AgentPurchaseIntent;\n};\n\nexport const createPostgresAgentPurchaseIntentStore = (options: {\n client: ExecutionSqlClient;\n namespace?: string;\n}): AgentPurchaseIntentStore => {\n const ns = namespaceOf(options.namespace ?? \"agent_commerce\");\n return {\n get: async (tenantId, purchaseId) =>\n parseRow(\n (\n await options.client.query<AgentPurchaseIntentRow>(\n `SELECT data FROM ${ns}.purchase_intents WHERE tenant_id = $1 AND purchase_id = $2`,\n [tenantId, purchaseId],\n )\n ).rows[0],\n ),\n getByIdempotencyKey: async (tenantId, idempotencyKey) =>\n parseRow(\n (\n await options.client.query<AgentPurchaseIntentRow>(\n `SELECT data FROM ${ns}.purchase_intents WHERE tenant_id = $1 AND idempotency_key = $2`,\n [tenantId, idempotencyKey],\n )\n ).rows[0],\n ),\n list: async (input) => {\n const clauses: string[] = [];\n const values: unknown[] = [];\n if (input.tenantId) {\n values.push(input.tenantId);\n clauses.push(`tenant_id = $${values.length}`);\n }\n if (input.ownerId) {\n values.push(input.ownerId);\n clauses.push(`owner_id = $${values.length}`);\n }\n if (input.status) {\n values.push(input.status);\n clauses.push(`status = $${values.length}`);\n }\n values.push(input.limit);\n const where = clauses.length > 0 ? ` WHERE ${clauses.join(\" AND \")}` : \"\";\n const result = await options.client.query<AgentPurchaseIntentRow>(\n `SELECT data FROM ${ns}.purchase_intents${where} ORDER BY created_at DESC LIMIT $${values.length}`,\n values,\n );\n return result.rows.map((row) => parseRow(row)!);\n },\n save: async (intent) => {\n const result = await options.client.query<{ purchase_id: string }>(\n `INSERT INTO ${ns}.purchase_intents\n (purchase_id, tenant_id, owner_id, idempotency_key, status, input_digest, data, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7::jsonb, $8, $9)\n ON CONFLICT (purchase_id) DO UPDATE SET\n status = excluded.status,\n data = excluded.data,\n updated_at = excluded.updated_at\n WHERE ${ns}.purchase_intents.tenant_id = excluded.tenant_id\n AND ${ns}.purchase_intents.input_digest = excluded.input_digest\n AND ${ns}.purchase_intents.idempotency_key = excluded.idempotency_key\n RETURNING purchase_id`,\n [\n intent.input.purchaseId,\n intent.input.tenantId,\n intent.input.ownerId,\n intent.input.idempotencyKey,\n intent.status,\n intent.inputDigest,\n JSON.stringify(intent),\n intent.createdAt,\n intent.updatedAt,\n ],\n );\n if (result.rows.length !== 1)\n throw new AgentPurchaseIntentError(\n \"Purchase identity belongs to another immutable request\",\n );\n },\n };\n};\n\ntype PurchaseWallet = {\n cancelSpend: (mandateId: string) => Promise<unknown>;\n requestSpend: (\n request: AgentSpendRequest,\n options?: { mandateId?: string },\n ) => Promise<SpendRequestResult>;\n};\n\nexport const createAgentPurchaseOrchestrator = (options: {\n effects: Pick<EffectStore, \"enqueue\" | \"getByIdempotencyKey\">;\n installations: Pick<\n EffectAdapterInstallationRegistry,\n \"disable\" | \"enable\" | \"put\"\n >;\n now?: () => number;\n store: AgentPurchaseIntentStore;\n wallet: PurchaseWallet;\n}) => {\n const now = options.now ?? Date.now;\n\n const saveStatus = async (\n intent: AgentPurchaseIntent,\n status: AgentPurchaseIntentStatus,\n mandate?: SpendMandate,\n ) => {\n let mandateSummary: Omit<SpendMandate, \"signature\"> | undefined;\n if (mandate) {\n const { signature, ...summary } = mandate;\n void signature;\n mandateSummary = summary;\n }\n const next: AgentPurchaseIntent = {\n ...intent,\n ...(mandateSummary ? { mandate: mandateSummary } : {}),\n status,\n updatedAt: now(),\n };\n await options.store.save(next);\n return next;\n };\n\n const submit = async <Payload>(\n input: AgentPurchaseIntentInput<Payload>,\n ): Promise<AgentPurchaseIntent<Payload>> => {\n if (!input.purchaseId.trim() || !input.idempotencyKey.trim())\n throw new AgentPurchaseIntentError(\n \"Purchase and idempotency identities are required\",\n );\n if (!Number.isSafeInteger(input.amountMinor) || input.amountMinor <= 0)\n throw new AgentPurchaseIntentError(\n \"Purchase amount must be positive integer minor units\",\n );\n const mandateId = `mandate:purchase:${input.purchaseId}`;\n const effectId = `purchase:${input.purchaseId}`;\n const envelope: EffectAdapterExecutionEnvelope<Payload> = {\n currency: input.currency,\n ...(input.destination ? { destination: input.destination } : {}),\n effect: input.effect,\n installationId: input.installationId,\n mandateId,\n payload: input.payload,\n spendMinor: input.amountMinor,\n };\n const inputDigest = await effectAdapterExecutionInputDigest(envelope);\n const existing = await options.store.get(input.tenantId, input.purchaseId);\n const idempotent = await options.store.getByIdempotencyKey(\n input.tenantId,\n input.idempotencyKey,\n );\n const prior = existing ?? idempotent;\n if (prior) {\n if (\n prior.input.purchaseId !== input.purchaseId ||\n prior.inputDigest !== inputDigest\n )\n throw new AgentPurchaseIntentError(\n \"Purchase identity belongs to another immutable request\",\n );\n if (prior.status === \"enqueued\" || prior.status === \"cancelled\")\n return prior as AgentPurchaseIntent<Payload>;\n }\n let intent = (prior ?? {\n createdAt: now(),\n effectId,\n envelope,\n input,\n inputDigest,\n mandateId,\n status: \"drafted\" as const,\n updatedAt: now(),\n }) as AgentPurchaseIntent<Payload>;\n await options.store.save(intent);\n\n const spendRequest: AgentSpendRequest = {\n action: input.effect,\n agentId: input.agentId,\n allowanceId: input.allowanceId,\n amountCents: input.amountMinor,\n cartHash: inputDigest,\n ...(input.category ? { category: input.category } : {}),\n currency: input.currency,\n expiresAt: input.expiresAt,\n idempotencyKey: `purchase:${input.idempotencyKey}`,\n merchantId: input.merchantId,\n ...(input.refundable === undefined\n ? {}\n : { refundable: input.refundable }),\n };\n const requested = await options.wallet.requestSpend(spendRequest, {\n mandateId,\n });\n if (requested.mandate.status === \"pending_approval\")\n return (await saveStatus(\n intent,\n \"pending_approval\",\n requested.mandate,\n )) as AgentPurchaseIntent<Payload>;\n if (requested.mandate.status !== \"active\")\n throw new AgentPurchaseIntentError(\n `Purchase mandate is ${requested.mandate.status}`,\n );\n intent = (await saveStatus(\n intent,\n \"mandate_ready\",\n requested.mandate,\n )) as AgentPurchaseIntent<Payload>;\n\n await options.installations.put({\n adapterId: input.adapterId,\n installationId: input.installationId,\n policy: {\n credentials: input.credentials ?? [],\n destinations: input.destination ? [input.destination] : [],\n effects: [input.effect],\n spend: {\n currency: input.currency,\n mandateId,\n maxMinorPerEffect: input.amountMinor,\n },\n },\n tenantId: input.tenantId,\n });\n await options.installations.enable(input.tenantId, input.installationId);\n intent = (await saveStatus(\n intent,\n \"installation_ready\",\n )) as AgentPurchaseIntent<Payload>;\n\n const timestamp = now();\n const effect: EffectRecord = {\n actionId: input.actionId,\n attempts: 0,\n availableAt: timestamp,\n createdAt: timestamp,\n effectId,\n handler: input.handler,\n idempotencyKey: `purchase:${input.idempotencyKey}`,\n input: envelope,\n inputDigest,\n status: \"pending\",\n tenantId: input.tenantId,\n updatedAt: timestamp,\n };\n if (!(await options.effects.enqueue(effect))) {\n const duplicate = await options.effects.getByIdempotencyKey(\n input.tenantId,\n effect.idempotencyKey,\n );\n if (\n !duplicate ||\n duplicate.effectId !== effect.effectId ||\n duplicate.inputDigest !== effect.inputDigest\n ) {\n await options.installations.disable(\n input.tenantId,\n input.installationId,\n );\n await options.wallet.cancelSpend(mandateId);\n throw new AgentPurchaseIntentError(\n \"Purchase effect idempotency key belongs to another request\",\n );\n }\n }\n return (await saveStatus(\n intent,\n \"enqueued\",\n )) as AgentPurchaseIntent<Payload>;\n };\n\n return {\n list: options.store.list,\n submit,\n };\n};\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "7F4B51ACBEFD6ECE64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/index.js
CHANGED
|
@@ -71,11 +71,11 @@ var assertProductionReady = async (stack) => {
|
|
|
71
71
|
return readiness;
|
|
72
72
|
};
|
|
73
73
|
export {
|
|
74
|
-
|
|
75
|
-
assertProductionReady,
|
|
74
|
+
AGENT_STACK_PACKAGES,
|
|
76
75
|
PRODUCTION_AGENT_CAPABILITIES,
|
|
77
|
-
|
|
76
|
+
assertProductionReady,
|
|
77
|
+
defineAgentStack
|
|
78
78
|
};
|
|
79
79
|
|
|
80
|
-
//# debugId=
|
|
80
|
+
//# debugId=27ECCED2C2413A4864756E2164756E21
|
|
81
81
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"export const AGENT_STACK_PACKAGES = {\n a2a: \"@absolutejs/a2a\",\n actions: \"@absolutejs/agency\",\n auth: \"@absolutejs/auth\",\n conformance: \"@absolutejs/agent-conformance\",\n commerce: \"@absolutejs/agent/commerce\",\n control: \"@absolutejs/agent-control\",\n discovery: \"@absolutejs/agent-discovery\",\n execution: \"@absolutejs/execution\",\n exchange: \"@absolutejs/agent-exchange\",\n inbox: \"@absolutejs/agent-inbox\",\n mcp: \"@absolutejs/mcp\",\n memory: \"@absolutejs/agent-memory\",\n policy: \"@absolutejs/policy\",\n runtime: \"@absolutejs/agent-runtime\",\n sandbox: \"@absolutejs/agent-sandbox\",\n trust: \"@absolutejs/agent-trust\",\n wallet: \"@absolutejs/wallet\",\n} as const;\n\nexport const PRODUCTION_AGENT_CAPABILITIES = [\n \"identity\",\n \"authorization\",\n \"durability\",\n \"sandbox\",\n \"trust\",\n \"memory\",\n \"triggers\",\n \"discovery\",\n \"interoperability\",\n \"spend\",\n \"operations\",\n \"conformance\",\n] as const;\n\nexport type ProductionAgentCapability =\n (typeof PRODUCTION_AGENT_CAPABILITIES)[number];\n\nexport type AgentStackComponent<Instance = unknown> = {\n capability: ProductionAgentCapability;\n instance: Instance;\n name: string;\n productionReady?: () => boolean | Promise<boolean>;\n};\n\nexport type AgentStack<Components extends readonly AgentStackComponent[]> = {\n components: Components;\n get: <Name extends Components[number][\"name\"]>(\n name: Name,\n ) => Extract<Components[number], { name: Name }>[\"instance\"];\n readiness: () => Promise<AgentStackReadiness>;\n};\n\nexport type AgentStackReadiness = {\n capabilities: Record<ProductionAgentCapability, boolean>;\n missing: ProductionAgentCapability[];\n ready: boolean;\n};\n\nconst readinessOf = async (\n components: readonly AgentStackComponent[],\n): Promise<AgentStackReadiness> => {\n const capabilities = Object.fromEntries(\n PRODUCTION_AGENT_CAPABILITIES.map((capability) => [capability, false]),\n ) as Record<ProductionAgentCapability, boolean>;\n for (const component of components) {\n if ((await component.productionReady?.()) === false) continue;\n capabilities[component.capability] = true;\n }\n const missing = PRODUCTION_AGENT_CAPABILITIES.filter(\n (capability) => !capabilities[capability],\n );\n\n return { capabilities, missing, ready: missing.length === 0 };\n};\n\nexport const defineAgentStack = <\n const Components extends readonly AgentStackComponent[],\n>(\n components: Components,\n): AgentStack<Components> => {\n const names = new Set<string>();\n for (const component of components) {\n if (names.has(component.name)) {\n throw new Error(`Duplicate agent stack component: ${component.name}`);\n }\n names.add(component.name);\n }\n\n return {\n components,\n get: (name) => {\n const component = components.find((candidate) => candidate.name === name);\n if (component === undefined) {\n throw new Error(`Unknown agent stack component: ${String(name)}`);\n }\n\n return component.instance as Extract<\n Components[number],\n { name: typeof name }\n >[\"instance\"];\n },\n readiness: () => readinessOf(components),\n };\n};\n\nexport const assertProductionReady = async (\n stack: Pick<AgentStack<readonly AgentStackComponent[]>, \"readiness\">,\n) => {\n const readiness = await stack.readiness();\n if (!readiness.ready) {\n throw new Error(\n `Agent stack is missing production capabilities: ${readiness.missing.join(\", \")}`,\n );\n }\n\n return readiness;\n};\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";;AAAO,IAAM,uBAAuB;AAAA,EAClC,KAAK;AAAA,EACL,SAAS;AAAA,EACT,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,IAAM,gCAAgC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AA0BA,IAAM,cAAc,OAClB,eACiC;AAAA,EACjC,MAAM,eAAe,OAAO,YAC1B,8BAA8B,IAAI,CAAC,eAAe,CAAC,YAAY,KAAK,CAAC,CACvE;AAAA,EACA,WAAW,aAAa,YAAY;AAAA,IAClC,IAAK,MAAM,UAAU,kBAAkB,MAAO;AAAA,MAAO;AAAA,IACrD,aAAa,UAAU,cAAc;AAAA,EACvC;AAAA,EACA,MAAM,UAAU,8BAA8B,OAC5C,CAAC,eAAe,CAAC,aAAa,WAChC;AAAA,EAEA,OAAO,EAAE,cAAc,SAAS,OAAO,QAAQ,WAAW,EAAE;AAAA;AAGvD,IAAM,mBAAmB,CAG9B,eAC2B;AAAA,EAC3B,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,aAAa,YAAY;AAAA,IAClC,IAAI,MAAM,IAAI,UAAU,IAAI,GAAG;AAAA,MAC7B,MAAM,IAAI,MAAM,oCAAoC,UAAU,MAAM;AAAA,IACtE;AAAA,IACA,MAAM,IAAI,UAAU,IAAI;AAAA,EAC1B;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA,KAAK,CAAC,SAAS;AAAA,MACb,MAAM,YAAY,WAAW,KAAK,CAAC,cAAc,UAAU,SAAS,IAAI;AAAA,MACxE,IAAI,cAAc,WAAW;AAAA,QAC3B,MAAM,IAAI,MAAM,kCAAkC,OAAO,IAAI,GAAG;AAAA,MAClE;AAAA,MAEA,OAAO,UAAU;AAAA;AAAA,IAKnB,WAAW,MAAM,YAAY,UAAU;AAAA,EACzC;AAAA;AAGK,IAAM,wBAAwB,OACnC,UACG;AAAA,EACH,MAAM,YAAY,MAAM,MAAM,UAAU;AAAA,EACxC,IAAI,CAAC,UAAU,OAAO;AAAA,IACpB,MAAM,IAAI,MACR,mDAAmD,UAAU,QAAQ,KAAK,IAAI,GAChF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "27ECCED2C2413A4864756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/migrations.js
CHANGED
|
@@ -481,9 +481,9 @@ var applyAgentPostgresMigrations = async (client, options = {}) => {
|
|
|
481
481
|
return result;
|
|
482
482
|
};
|
|
483
483
|
export {
|
|
484
|
-
|
|
485
|
-
|
|
484
|
+
agentPostgresMigrations,
|
|
485
|
+
applyAgentPostgresMigrations
|
|
486
486
|
};
|
|
487
487
|
|
|
488
|
-
//# debugId=
|
|
488
|
+
//# debugId=625CF44069D7682E64756E2164756E21
|
|
489
489
|
//# sourceMappingURL=migrations.js.map
|
package/dist/migrations.js.map
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"import { createHash } from \"node:crypto\";\nimport { a2aPostgresSchemaSql } from \"@absolutejs/a2a\";\nimport { agencyPostgresMigrations } from \"@absolutejs/agency\";\nimport { agentControlPostgresSchemaSql } from \"@absolutejs/agent-control\";\nimport { agentInboxPostgresSchemaSql } from \"@absolutejs/agent-inbox\";\nimport { agentMemoryPostgresSchemaSql } from \"@absolutejs/agent-memory\";\nimport { agentRuntimePostgresSchemaSql } from \"@absolutejs/agent-runtime\";\nimport { executionPostgresMigrations } from \"@absolutejs/execution\";\nimport { mcpPostgresSchemaSql } from \"@absolutejs/mcp\";\nimport {\n walletAgentTenantInventoryPostgresSchemaSql,\n walletPostgresSchemaSql,\n} from \"@absolutejs/wallet\";\nimport { agentPurchaseIntentsPostgresSchemaSql } from \"./commerce\";\n\n/**\n * The subsystems whose schema this runner can apply. A host selects the ones it\n * actually uses; anything it leaves out is never created.\n *\n * Applying the whole stack unconditionally means an app that only wants, say,\n * agency approvals still gets wallet's six tables, its balance-assertion\n * function, and a constraint trigger — inert schema in a production database\n * that nothing reads, that every schema audit has to explain, and that shows up\n * in any drift or catalog check as unaccounted-for objects.\n */\nexport type AgentPostgresModule =\n | \"a2a\"\n | \"agency\"\n | \"agent-control\"\n | \"agent-inbox\"\n | \"agent-memory\"\n | \"agent-runtime\"\n | \"commerce\"\n | \"execution\"\n | \"mcp\"\n | \"wallet\";\n\nexport type AgentPostgresMigration = {\n digest: string;\n id: string;\n module: AgentPostgresModule;\n packageName: string;\n packageVersion: string;\n sql: string;\n};\n\nexport type AgentPostgresMigrationClient = {\n query: <Row = Record<string, unknown>>(\n text: string,\n values?: ReadonlyArray<unknown>,\n ) => Promise<{ rows: ReadonlyArray<Row> }>;\n};\n\nexport type AgentPostgresMigrationResult = {\n applied: string[];\n skipped: string[];\n};\n\nconst LOCK_KEY = \"absolutejs:agent:migrations\";\nconst JOURNAL_TABLE = \"absolutejs_agent_migrations\";\nconst JOURNAL_SQL = `CREATE TABLE IF NOT EXISTS ${JOURNAL_TABLE} (\n id text PRIMARY KEY,\n package_name text NOT NULL,\n package_version text NOT NULL,\n digest text NOT NULL,\n applied_at timestamptz NOT NULL DEFAULT now()\n)`;\n\nconst definitions = [\n ...agencyPostgresMigrations().map((migration) => ({\n ...migration,\n module: \"agency\" as const,\n packageName: \"@absolutejs/agency\",\n packageVersion: migration.id.split(\"@\").at(-1) ?? \"unknown\",\n })),\n {\n id: \"agent-runtime@0.1.0\",\n module: \"agent-runtime\",\n packageName: \"@absolutejs/agent-runtime\",\n packageVersion: \"0.1.0\",\n sql: agentRuntimePostgresSchemaSql(),\n },\n {\n id: \"agent-memory@0.1.0\",\n module: \"agent-memory\",\n packageName: \"@absolutejs/agent-memory\",\n packageVersion: \"0.1.0\",\n sql: agentMemoryPostgresSchemaSql(),\n },\n {\n id: \"agent-inbox@0.1.0\",\n module: \"agent-inbox\",\n packageName: \"@absolutejs/agent-inbox\",\n packageVersion: \"0.1.0\",\n sql: agentInboxPostgresSchemaSql(),\n },\n {\n id: \"mcp@0.10.1\",\n module: \"mcp\",\n packageName: \"@absolutejs/mcp\",\n packageVersion: \"0.10.1\",\n sql: mcpPostgresSchemaSql(),\n },\n {\n id: \"a2a@0.2.2\",\n module: \"a2a\",\n packageName: \"@absolutejs/a2a\",\n packageVersion: \"0.2.2\",\n sql: a2aPostgresSchemaSql(),\n },\n {\n id: \"wallet@0.3.0\",\n module: \"wallet\",\n packageName: \"@absolutejs/wallet\",\n packageVersion: \"0.3.0\",\n sql: walletPostgresSchemaSql(),\n },\n {\n id: \"wallet-agent-tenant-inventory@0.5.0\",\n module: \"wallet\",\n packageName: \"@absolutejs/wallet\",\n packageVersion: \"0.5.0\",\n sql: walletAgentTenantInventoryPostgresSchemaSql(),\n },\n {\n id: \"agent-control@0.4.0\",\n module: \"agent-control\",\n packageName: \"@absolutejs/agent-control\",\n packageVersion: \"0.4.0\",\n sql: agentControlPostgresSchemaSql(),\n },\n ...executionPostgresMigrations().map((migration) => ({\n ...migration,\n module: \"execution\" as const,\n })),\n {\n id: \"agent-commerce-purchase-intents@0.23.1\",\n module: \"commerce\",\n packageName: \"@absolutejs/agent\",\n packageVersion: \"0.23.1\",\n sql: agentPurchaseIntentsPostgresSchemaSql(),\n },\n] as const;\n\nconst digest = (value: string) =>\n createHash(\"sha256\").update(value).digest(\"hex\");\n\n/**\n * Ordered database contract for the AbsoluteJS agent stack.\n *\n * Pass `modules` to get only the subsystems the host actually uses; omit it for\n * the complete stack, which is the historical behaviour. Narrowing later is\n * safe: already-applied migrations stay recorded in the journal and are simply\n * not revisited, and widening again applies the rest on the next run.\n */\nexport const agentPostgresMigrations = (\n modules?: readonly AgentPostgresModule[],\n): AgentPostgresMigration[] => {\n const selected = modules === undefined ? null : new Set(modules);\n\n return definitions\n .filter((migration) => selected === null || selected.has(migration.module))\n .map((migration) => ({ ...migration, digest: digest(migration.sql) }));\n};\n\nconst rollback = async (client: AgentPostgresMigrationClient) => {\n try {\n await client.query(\"ROLLBACK\");\n } catch {\n // Preserve the migration failure when the connection itself was lost.\n }\n};\n\nconst migrationDisposition = async (\n client: AgentPostgresMigrationClient,\n migration: AgentPostgresMigration,\n) => {\n const existing = await client.query<{ digest: string }>(\n `SELECT digest FROM ${JOURNAL_TABLE} WHERE id = $1 FOR UPDATE`,\n [migration.id],\n );\n const [recorded] = existing.rows;\n if (!recorded) return \"applied\" as const;\n if (recorded.digest !== migration.digest) {\n throw new Error(\n `Agent migration ${migration.id} changed after it was applied`,\n );\n }\n\n return \"skipped\" as const;\n};\n\nconst recordMigration = async (\n client: AgentPostgresMigrationClient,\n migration: AgentPostgresMigration,\n) => {\n await client.query(migration.sql);\n await client.query(\n `INSERT INTO ${JOURNAL_TABLE}\n (id, package_name, package_version, digest)\n VALUES ($1, $2, $3, $4)`,\n [\n migration.id,\n migration.packageName,\n migration.packageVersion,\n migration.digest,\n ],\n );\n};\n\nconst migrateOne = async (\n client: AgentPostgresMigrationClient,\n migration: AgentPostgresMigration,\n result: AgentPostgresMigrationResult,\n) => {\n await client.query(\"BEGIN\");\n try {\n const disposition = await migrationDisposition(client, migration);\n if (disposition === \"applied\") await recordMigration(client, migration);\n result[disposition].push(migration.id);\n await client.query(\"COMMIT\");\n } catch (error) {\n await rollback(client);\n throw error;\n }\n};\n\nexport type ApplyAgentPostgresMigrationsOptions = {\n /** Subsystems to apply. Omit for the complete stack. Passing only what the\n * host uses keeps unused schema — wallet's tables, function, and constraint\n * trigger being the usual culprits — out of its database entirely. */\n modules?: readonly AgentPostgresModule[];\n};\n\n/** Apply the selected package-owned agent migrations once under a\n * cross-replica lock. */\nexport const applyAgentPostgresMigrations = async (\n client: AgentPostgresMigrationClient,\n options: ApplyAgentPostgresMigrationsOptions = {},\n) => {\n const result: AgentPostgresMigrationResult = { applied: [], skipped: [] };\n await client.query(\"SELECT pg_advisory_lock(hashtextextended($1, 0))\", [\n LOCK_KEY,\n ]);\n try {\n await client.query(JOURNAL_SQL);\n for (const migration of agentPostgresMigrations(options.modules)) {\n await migrateOne(client, migration, result);\n }\n } finally {\n await client.query(\"SELECT pg_advisory_unlock(hashtextextended($1, 0))\", [\n LOCK_KEY,\n ]);\n }\n\n return result;\n};\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": "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",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "625CF44069D7682E64756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@absolutejs/agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.1",
|
|
4
4
|
"description": "The production-grade, provider-neutral agent stack for AbsoluteJS: auth, actions, runtime, sandboxing, trust, memory, inbox, discovery, MCP, A2A, policy, wallet limits, controls, and conformance.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -130,9 +130,11 @@
|
|
|
130
130
|
}
|
|
131
131
|
},
|
|
132
132
|
"files": [
|
|
133
|
-
"
|
|
133
|
+
"CHANGELOG.md",
|
|
134
|
+
"LICENSE",
|
|
134
135
|
"README.md",
|
|
135
|
-
"
|
|
136
|
+
"changelog.json",
|
|
137
|
+
"dist"
|
|
136
138
|
],
|
|
137
139
|
"publishConfig": {
|
|
138
140
|
"access": "public"
|
|
@@ -143,8 +145,9 @@
|
|
|
143
145
|
"test": "bun test",
|
|
144
146
|
"format": "prettier --write \"./**/*.{ts,json,md,yml}\"",
|
|
145
147
|
"verify-package": "absolute-manifest verify-package",
|
|
146
|
-
"check:package": "bun run typecheck && bun run test && bun run verify-package && bun run build",
|
|
147
|
-
"release": "bun run format && bun run check:package && npm publish --access public"
|
|
148
|
+
"check:package": "bun run typecheck && bun run test && bun run verify-package && bun run build && absolute-changelog check",
|
|
149
|
+
"release": "bun run format && bun run check:package && npm publish --access public",
|
|
150
|
+
"prepublishOnly": "bun run check:package"
|
|
148
151
|
},
|
|
149
152
|
"dependencies": {
|
|
150
153
|
"@absolutejs/a2a": "^0.3.6",
|
|
@@ -152,7 +155,7 @@
|
|
|
152
155
|
"@absolutejs/agent-conformance": "^0.15.0",
|
|
153
156
|
"@absolutejs/agent-control": "^0.5.7",
|
|
154
157
|
"@absolutejs/agent-discovery": "^0.2.2",
|
|
155
|
-
"@absolutejs/agent-exchange": "0.
|
|
158
|
+
"@absolutejs/agent-exchange": "0.5.0",
|
|
156
159
|
"@absolutejs/agent-inbox": "^0.3.4",
|
|
157
160
|
"@absolutejs/agent-memory": "^0.1.6",
|
|
158
161
|
"@absolutejs/agent-runtime": "^0.2.5",
|
|
@@ -160,7 +163,7 @@
|
|
|
160
163
|
"@absolutejs/agent-trust": "^0.2.1",
|
|
161
164
|
"@absolutejs/arazzo": "^0.1.3",
|
|
162
165
|
"@absolutejs/manifest": "^0.9.0",
|
|
163
|
-
"@absolutejs/mcp": "^0.
|
|
166
|
+
"@absolutejs/mcp": "^0.13.0",
|
|
164
167
|
"@absolutejs/policy": "^0.3.0",
|
|
165
168
|
"@absolutejs/wallet": "^0.9.3",
|
|
166
169
|
"@absolutejs/webmcp": "^0.1.5",
|
|
@@ -168,6 +171,7 @@
|
|
|
168
171
|
},
|
|
169
172
|
"devDependencies": {
|
|
170
173
|
"@absolutejs/auth": "0.65.0",
|
|
174
|
+
"@absolutejs/changelog": "^0.6.0",
|
|
171
175
|
"@absolutejs/execution": "0.14.6",
|
|
172
176
|
"@types/bun": "^1.3.14",
|
|
173
177
|
"drizzle-orm": "1.0.0-rc.4",
|