agentic-assistant 0.7.2 → 0.7.4
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 +10 -0
- package/README.md +35 -1
- package/SKILL.md +4 -0
- package/dist/account.d.ts +16 -0
- package/dist/account.js +21 -0
- package/dist/{chunk-2EGHI5R5.js → chunk-7E4CVVOB.js} +1 -1
- package/dist/{chunk-7T7GHGRH.js → chunk-P7PDVTZV.js} +1 -1
- package/dist/{chunk-6GHMDRBO.js → chunk-QF4GC5IN.js} +2 -2
- package/dist/{chunk-XTUZBZJV.js → chunk-UDNV7TOY.js} +2 -2
- package/dist/{chunk-QCDYCSLO.js → chunk-VRQ23I3J.js} +1 -1
- package/dist/cli.js +4 -4
- package/dist/demo.js +5 -5
- package/dist/index.js +4 -4
- package/dist/{mcp-server-TSP6G47K.js → mcp-server-DJH3N6SF.js} +4 -4
- package/dist/worker.js +2 -2
- package/llms.txt +1 -0
- package/package.json +9 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.4
|
|
4
|
+
|
|
5
|
+
- Add `agentic-assistant/account` with a typed, stateless account contributor.
|
|
6
|
+
- Require `agentic-identity` 0.10 for the account registry contract; drop 0.9 support.
|
|
7
|
+
- Document the host boundary for transcripts, shared data, and agent outputs.
|
|
8
|
+
|
|
9
|
+
## 0.7.3
|
|
10
|
+
|
|
11
|
+
- Support agentic-design 0.8 and 0.9 and agentic-identity 0.9 and 0.10.
|
|
12
|
+
|
|
3
13
|
## 0.7.2
|
|
4
14
|
|
|
5
15
|
Patch. No change to the SDK, CLI, React panel, or HTTP shape.
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
An AI assistant that acts inside your apps with the user's own permissions.
|
|
9
9
|
|
|
10
|
-
> Status: early. The core loop, the tool sources, approvals, the React panel, the CLI, the MCP server, and the hosted HTTP API work.
|
|
10
|
+
> Status: 0.7.4, early. The core loop, the tool sources, approvals, the React panel, the CLI, the MCP server, and the hosted HTTP API work.
|
|
11
11
|
|
|
12
12
|
A demo Worker runs at https://agentic-assistant-demo.hello-fd1.workers.dev. `GET /` shows a demo page and `GET /health` answers 200. The `/api/v1` routes need a bearer key, so without one they answer 401. The demo has no model key set. A signed-in `POST /api/v1/chat` answers 503 with `not_configured`. The demo never fakes an answer.
|
|
13
13
|
|
|
@@ -292,6 +292,40 @@ The record says who made the content. It does not say the content is true.
|
|
|
292
292
|
- A tool error text goes to the `detail` field of the event. The model sees only `tool failed`.
|
|
293
293
|
- A model refusal stops the run, unless you set a fallback model. `FallbackProvider(primary, fallback)` or `--fallback-model <id>` asks the second model once when the first refuses or fails. Each `turn_end` event has `answeredBy` with the model that answered. The text of the first model is held until its turn ends, so a turn with a fallback does not stream word by word. A refusal from the fallback stops the run. The fallback gets only the output room that the first ask left, and the caps count the input of both asks, so a token or cost cap holds. A first ask that failed after it streamed is counted by an estimate. If the fallback itself fails after it streamed, the totals of that run leave out the first ask. Its error text is not kept.
|
|
294
294
|
|
|
295
|
+
## Account export and erase
|
|
296
|
+
|
|
297
|
+
```ts
|
|
298
|
+
import { createMemoryStore, type PrincipalContext } from "agentic-identity";
|
|
299
|
+
import { assistantAccount } from "agentic-assistant/account";
|
|
300
|
+
import { createAccountRegistry } from "agentic-identity/account";
|
|
301
|
+
|
|
302
|
+
const registry = createAccountRegistry().register(assistantAccount, undefined);
|
|
303
|
+
const subject = { id: "ana", kind: "human" } as const;
|
|
304
|
+
const store = createMemoryStore(); // Use the host identity store in production.
|
|
305
|
+
declare const actor: PrincipalContext; // Use the signed-in actor from the host.
|
|
306
|
+
const data = await registry.export(subject);
|
|
307
|
+
const result = await registry.erase(subject, store, { actor });
|
|
308
|
+
// data.manifest.apps is [{ id: "assistant", files: [] }].
|
|
309
|
+
// result.counts.assistant is {}.
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
The contributor implements `AccountPackage<void>` from `agentic-identity` 0.10.
|
|
313
|
+
It holds no persistent account data. Both calls check the subject id and kind.
|
|
314
|
+
An invalid subject stops the call. A repeat erase returns empty counts.
|
|
315
|
+
|
|
316
|
+
The runtime sends messages, tool results, and machine-made provenance to the
|
|
317
|
+
host. It stores no items, versions, history, sharing grants, attachments, or
|
|
318
|
+
blobs. Pending approvals live in memory during a run. Stop active runs and
|
|
319
|
+
cancel pending approvals before account erasure. This contributor does not stop
|
|
320
|
+
runs or clear host memory.
|
|
321
|
+
|
|
322
|
+
The host must register the packages that store its data. Those packages must
|
|
323
|
+
export owned and authored data, delete sole-owned items, and keep other owners
|
|
324
|
+
on shared items. They must handle damaged records and retries. Retained agent
|
|
325
|
+
outputs must keep their machine-made labels. Empty counts here cover only this
|
|
326
|
+
package; they do not confirm that the host erased the account. Credentials and
|
|
327
|
+
identity audit records belong to the identity account flow.
|
|
328
|
+
|
|
295
329
|
## Develop
|
|
296
330
|
|
|
297
331
|
```sh
|
package/SKILL.md
CHANGED
|
@@ -53,6 +53,10 @@ To list tools and decide on pending calls on a running API, use `agentic-assista
|
|
|
53
53
|
|
|
54
54
|
Import `agentic-design/tokens.css` and `agentic-assistant/react.css` too (the panel colors are design tokens). Label every assistant part as machine-made.
|
|
55
55
|
|
|
56
|
+
## Account export and erase
|
|
57
|
+
|
|
58
|
+
- Account contributor: `import { assistantAccount } from "agentic-assistant/account"`; register it with `createAccountRegistry()` from `agentic-identity/account`. It holds no persistent account data.
|
|
59
|
+
|
|
56
60
|
## Test without a model
|
|
57
61
|
|
|
58
62
|
Use `ScriptedProvider` from `agentic-assistant/testing`. Give it one scripted turn per model call.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AccountPackage } from 'agentic-identity/account';
|
|
2
|
+
|
|
3
|
+
/** The assistant has no persistent account data and needs no storage dependency. */
|
|
4
|
+
type AssistantAccount = AccountPackage<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Account registry contributor for the stateless assistant runtime.
|
|
7
|
+
* Messages, tool results, and provenance are returned to the host, never saved
|
|
8
|
+
* here. Pending approvals exist only during a run. Stop active runs before an
|
|
9
|
+
* account erase. Hosts must export and erase their own retained transcripts,
|
|
10
|
+
* outputs, grants, history, and blobs through the packages that store them.
|
|
11
|
+
* Empty records and counts mean this package has no persistent data; they do
|
|
12
|
+
* not confirm that the host erased an account or stopped an active run.
|
|
13
|
+
*/
|
|
14
|
+
declare const assistantAccount: AssistantAccount;
|
|
15
|
+
|
|
16
|
+
export { type AssistantAccount, assistantAccount };
|
package/dist/account.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// src/account.ts
|
|
2
|
+
import { PRINCIPAL_KINDS } from "agentic-identity";
|
|
3
|
+
function checkSubject(subject) {
|
|
4
|
+
if (typeof subject?.id !== "string" || subject.id.trim() === "" || !PRINCIPAL_KINDS.includes(subject.kind)) {
|
|
5
|
+
throw new TypeError("subject needs a non-empty id and a valid principal kind");
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
var assistantAccount = {
|
|
9
|
+
id: "assistant",
|
|
10
|
+
async exportAccount(subject) {
|
|
11
|
+
checkSubject(subject);
|
|
12
|
+
return {};
|
|
13
|
+
},
|
|
14
|
+
async eraseAccount(subject) {
|
|
15
|
+
checkSubject(subject);
|
|
16
|
+
return {};
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
export {
|
|
20
|
+
assistantAccount
|
|
21
|
+
};
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
AnthropicProvider,
|
|
6
6
|
checkBaseUrl,
|
|
7
7
|
isLoopback
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VRQ23I3J.js";
|
|
9
9
|
import {
|
|
10
10
|
PrincipalError,
|
|
11
11
|
ProviderError,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
digestCall,
|
|
18
18
|
printable,
|
|
19
19
|
runAssistant
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-P7PDVTZV.js";
|
|
21
21
|
import {
|
|
22
22
|
AssistantApiError,
|
|
23
23
|
createClient
|
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
describeFailure,
|
|
3
3
|
runChat,
|
|
4
4
|
runRemote
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QF4GC5IN.js";
|
|
6
6
|
import {
|
|
7
7
|
VERSION,
|
|
8
8
|
provenanceLabel,
|
|
9
9
|
provenanceMarker
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-P7PDVTZV.js";
|
|
11
11
|
|
|
12
12
|
// src/mcp-server.ts
|
|
13
13
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
package/dist/cli.js
CHANGED
|
@@ -7,15 +7,15 @@ import {
|
|
|
7
7
|
readTextFile,
|
|
8
8
|
runChat,
|
|
9
9
|
runRemote
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-QF4GC5IN.js";
|
|
11
11
|
import "./chunk-HYT732TN.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-VRQ23I3J.js";
|
|
13
13
|
import {
|
|
14
14
|
TOOL_RISKS,
|
|
15
15
|
VERSION,
|
|
16
16
|
printable,
|
|
17
17
|
provenanceLabel
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-P7PDVTZV.js";
|
|
19
19
|
import "./chunk-QTIEDY3V.js";
|
|
20
20
|
|
|
21
21
|
// src/cli.ts
|
|
@@ -327,7 +327,7 @@ async function runCli(argv, io = defaultIo()) {
|
|
|
327
327
|
for (const skip of setup.skipped.slice(0, MAX_SKIPPED_LINES)) io.err(`skipped tool ${oneLine(skip.name, 100)}: ${oneLine(skip.reason, 200)}`);
|
|
328
328
|
if (setup.skipped.length > MAX_SKIPPED_LINES) io.err(`skipped ${setup.skipped.length - MAX_SKIPPED_LINES} more tools`);
|
|
329
329
|
if (parsed.command === "mcp") {
|
|
330
|
-
const { startAssistantMcp } = await import("./mcp-server-
|
|
330
|
+
const { startAssistantMcp } = await import("./mcp-server-DJH3N6SF.js");
|
|
331
331
|
await startAssistantMcp(setup, remote, { approve: parsed.allowApprove ?? false });
|
|
332
332
|
return 0;
|
|
333
333
|
}
|
package/dist/demo.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AnthropicProvider
|
|
3
|
+
} from "./chunk-VRQ23I3J.js";
|
|
1
4
|
import {
|
|
2
5
|
createStaticTokenAuth,
|
|
3
6
|
createWorker
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import {
|
|
6
|
-
AnthropicProvider
|
|
7
|
-
} from "./chunk-QCDYCSLO.js";
|
|
7
|
+
} from "./chunk-7E4CVVOB.js";
|
|
8
8
|
import {
|
|
9
9
|
ToolRegistry,
|
|
10
10
|
VERSION,
|
|
11
11
|
hasScope
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-P7PDVTZV.js";
|
|
13
13
|
|
|
14
14
|
// src/demo-page.ts
|
|
15
15
|
var DEMO_CSP = "default-src 'none'; style-src 'unsafe-inline'; script-src 'unsafe-inline'; connect-src 'self'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'";
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAssistantMcpServer,
|
|
3
3
|
startAssistantMcp
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UDNV7TOY.js";
|
|
5
5
|
import {
|
|
6
6
|
ConfigError,
|
|
7
7
|
FallbackProvider,
|
|
@@ -10,13 +10,13 @@ import {
|
|
|
10
10
|
connectMcpTools,
|
|
11
11
|
parseTarget,
|
|
12
12
|
runChat
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-QF4GC5IN.js";
|
|
14
14
|
import "./chunk-HYT732TN.js";
|
|
15
15
|
import {
|
|
16
16
|
AnthropicProvider,
|
|
17
17
|
DEFAULT_ANTHROPIC_MODEL,
|
|
18
18
|
PRICING_CHECKED_ON
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-VRQ23I3J.js";
|
|
20
20
|
import {
|
|
21
21
|
ACTIONS,
|
|
22
22
|
DATA_NOTICE,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
provenanceMarker,
|
|
41
41
|
runAssistant,
|
|
42
42
|
scopeCovers
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-P7PDVTZV.js";
|
|
44
44
|
import "./chunk-QTIEDY3V.js";
|
|
45
45
|
export {
|
|
46
46
|
ACTIONS,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAssistantMcpServer,
|
|
3
3
|
startAssistantMcp
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-UDNV7TOY.js";
|
|
5
|
+
import "./chunk-QF4GC5IN.js";
|
|
6
6
|
import "./chunk-HYT732TN.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-VRQ23I3J.js";
|
|
8
|
+
import "./chunk-P7PDVTZV.js";
|
|
9
9
|
import "./chunk-QTIEDY3V.js";
|
|
10
10
|
export {
|
|
11
11
|
createAssistantMcpServer,
|
package/dist/worker.js
CHANGED
package/llms.txt
CHANGED
|
@@ -10,6 +10,7 @@ Keywords: assistant,ai,agent,tools,mcp,sdk,side-panel,approvals,eu,model-port.
|
|
|
10
10
|
- HTTP client: import { createClient, AssistantApiError } from "agentic-assistant/client"; createClient({ baseUrl, token, fetch? }) gives health, tools, chat (async generator of events), approvals, approve(id, digest), deny(id, reason?). Typed errors with code and status.
|
|
11
11
|
- AI marking: events carry `provenance`; use provenanceLabel and provenanceMarker (JSON-LD, IPTC trainedAlgorithmicMedia). Also in HTTP, CLI --json and MCP results.
|
|
12
12
|
- Panel: import { AssistantPanel } from "agentic-assistant/react"; import "agentic-design/tokens.css"; import "agentic-assistant/react.css" (colors are agentic-design tokens).
|
|
13
|
+
- Account contributor: `import { assistantAccount } from "agentic-assistant/account"`; register it with `createAccountRegistry()` from `agentic-identity/account`. It holds no persistent account data.
|
|
13
14
|
- Test provider: import { ScriptedProvider } from "agentic-assistant/testing".
|
|
14
15
|
|
|
15
16
|
## Docs
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-assistant",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
4
4
|
"description": "An AI assistant that acts inside your apps with the user's own permissions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"assistant",
|
|
@@ -57,7 +57,11 @@
|
|
|
57
57
|
"types": "./dist/react.d.ts",
|
|
58
58
|
"import": "./dist/react.js"
|
|
59
59
|
},
|
|
60
|
-
"./react.css": "./dist/react.css"
|
|
60
|
+
"./react.css": "./dist/react.css",
|
|
61
|
+
"./account": {
|
|
62
|
+
"types": "./dist/account.d.ts",
|
|
63
|
+
"import": "./dist/account.js"
|
|
64
|
+
}
|
|
61
65
|
},
|
|
62
66
|
"bin": {
|
|
63
67
|
"agentic-assistant": "./dist/cli.js"
|
|
@@ -74,7 +78,7 @@
|
|
|
74
78
|
"dependencies": {
|
|
75
79
|
"@anthropic-ai/sdk": "^1.3.0",
|
|
76
80
|
"@modelcontextprotocol/sdk": "^1.32.2",
|
|
77
|
-
"agentic-identity": "^0.
|
|
81
|
+
"agentic-identity": "^0.10.0",
|
|
78
82
|
"ajv": "^8.20.0"
|
|
79
83
|
},
|
|
80
84
|
"devDependencies": {
|
|
@@ -84,7 +88,7 @@
|
|
|
84
88
|
"@types/node": "^22.0.0",
|
|
85
89
|
"@types/react": "^19.3.0",
|
|
86
90
|
"@types/react-dom": "^19.3.0",
|
|
87
|
-
"agentic-design": "
|
|
91
|
+
"agentic-design": ">=0.8.0 <0.10.0",
|
|
88
92
|
"jsdom": "^30.1.3",
|
|
89
93
|
"react": "^19.3.1",
|
|
90
94
|
"react-dom": "^19.3.1",
|
|
@@ -94,7 +98,7 @@
|
|
|
94
98
|
"wrangler": "^4.155.0"
|
|
95
99
|
},
|
|
96
100
|
"peerDependencies": {
|
|
97
|
-
"agentic-design": ">=0.
|
|
101
|
+
"agentic-design": ">=0.8.0 <0.10.0",
|
|
98
102
|
"react": ">=18"
|
|
99
103
|
},
|
|
100
104
|
"peerDependenciesMeta": {
|