agentic-assistant 0.6.0 → 0.7.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/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.0
4
+
5
+ Changed
6
+
7
+ - The chat panel has the agentic-design 0.5 calm look. Cards and messages have soft borders. The text field, buttons, approval prompt, and warnings keep a strong edge. The panel reads the `--agd-*` space, radius, type, control-size, and shadow tokens, each with a fallback. The focus ring is 2px (was 3px). A disabled button has a dashed edge.
8
+ - BREAKING: panel class names use the `agd-` prefix. Your `.aa-*` overrides stop applying without an error. Migration: `.aa-panel` is now `.agd-assistant`, and each part is `.agd-assistant__<part>` (`.aa-button` is `.agd-assistant__button`, `.aa-primary` is `.agd-assistant__primary`). Rename any override in your own CSS. The `--aa-*` variables keep their names. New variables: `--aa-edge` sets the strong edge, `--aa-border` is now the soft border, and `--aa-hover-bg`, `--aa-accent-hover`, and `--aa-shadow` set the hover and shadow. If you override `--aa-bg` or `--aa-accent`, also set `--aa-hover-bg` and `--aa-accent-hover`, so hover text stays readable.
9
+ - The label on every part the assistant makes reads "AI-generated" (it read "Machine-made"). It stays visible and is real text, so a screen reader reads it. The `data-machine-made` attribute does not change.
10
+
11
+ ## 0.6.1
12
+
13
+ Patch. No change to the SDK, CLI or HTTP shape.
14
+
15
+ Changed
16
+
17
+ - `agentic-identity` is `^0.8.0`. The lockfile follows. The 0.8.0 additions (`tokens create`, `delegations create`) are not used here.
18
+ - `agentic-design` dev and peer dependency is `^0.5.0`. Version 0.5.0 changes token values only (colors, sizes, radii, shadows). Token names and the `agd-` prefix do not change. This package reads only `--agd-color-*` tokens.
19
+
3
20
  ## 0.6.0
4
21
 
5
22
  Changed
package/README.md CHANGED
@@ -118,11 +118,11 @@ import "agentic-assistant/react.css";
118
118
  />;
119
119
  ```
120
120
 
121
- The panel colors are `agentic-design` tokens (`--agd-color-*`), so load `agentic-design/tokens.css` once, as above. The panel then follows your light or dark theme. Without the tokens the panel uses system colors. Set all `--agd-color-*` tokens or none: a partial set can give a pair that fails contrast. To set your own colors, override the `--aa-*` variables on `.aa-panel`.
121
+ The panel colors are `agentic-design` tokens (`--agd-color-*`), so load `agentic-design/tokens.css` once, as above. The panel also reads the `--agd-*` space, radius, type, control-size, and shadow tokens from the same file. Each one has a fallback. The panel then follows your light or dark theme. Without the tokens the panel uses system colors, and buttons show no hover change. Set all `--agd-color-*` tokens or none: a partial set can give a pair that fails contrast. To set your own colors, override the `--aa-*` variables on `.agd-assistant`. If you override `--aa-bg` or `--aa-accent`, also set `--aa-hover-bg` and `--aa-accent-hover`.
122
122
 
123
- The panel streams the answer, shows each tool call as a card, and shows an approval prompt with the exact arguments. Every message, card, and prompt that the assistant makes carries a visible "Machine-made" label. Tool output is shown as text and never as HTML. The panel does not hold a model, a key, or a gate. It needs `react` 18 or newer.
123
+ The panel streams the answer, shows each tool call as a card, and shows an approval prompt with the exact arguments. Every message, card, and prompt that the assistant makes carries a visible "AI-generated" label. Tool output is shown as text and never as HTML. The panel does not hold a model, a key, or a gate. It needs `react` 18 or newer.
124
124
 
125
- The look comes from plain CSS variables (`--aa-bg`, `--aa-fg`, `--aa-accent`, and others). Set them on `.aa-panel` or a parent. The sheet loads no font, image, or file from another host. A prompt that the run left open (after Stop or an error) is closed and marked expired. Closing the panel stops the run.
125
+ The look comes from plain CSS variables (`--aa-bg`, `--aa-fg`, `--aa-accent`, and others). Set them on `.agd-assistant`. The sheet loads no font, image, or file from another host. A prompt that the run left open (after Stop or an error) is closed and marked expired. Closing the panel stops the run.
126
126
 
127
127
  ## Use the CLI
128
128
 
@@ -2,12 +2,12 @@ import {
2
2
  describeFailure,
3
3
  runChat,
4
4
  runRemote
5
- } from "./chunk-WDZUIVU7.js";
5
+ } from "./chunk-RC3FA7MX.js";
6
6
  import {
7
7
  VERSION,
8
8
  provenanceLabel,
9
9
  provenanceMarker
10
- } from "./chunk-4YOTNHWM.js";
10
+ } from "./chunk-VIFRLQO3.js";
11
11
 
12
12
  // src/mcp-server.ts
13
13
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ProviderError
3
- } from "./chunk-4YOTNHWM.js";
3
+ } from "./chunk-VIFRLQO3.js";
4
4
 
5
5
  // src/providers/anthropic.ts
6
6
  import Anthropic from "@anthropic-ai/sdk";
@@ -4,7 +4,7 @@ import {
4
4
  hasScope,
5
5
  parseScope,
6
6
  runAssistant
7
- } from "./chunk-4YOTNHWM.js";
7
+ } from "./chunk-VIFRLQO3.js";
8
8
 
9
9
  // src/api.ts
10
10
  import { PRINCIPAL_KINDS } from "agentic-identity";
@@ -5,7 +5,7 @@ import {
5
5
  AnthropicProvider,
6
6
  checkBaseUrl,
7
7
  isLoopback
8
- } from "./chunk-IXOE6XPI.js";
8
+ } from "./chunk-GY5OOKGO.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-4YOTNHWM.js";
20
+ } from "./chunk-VIFRLQO3.js";
21
21
  import {
22
22
  AssistantApiError,
23
23
  createClient
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  import { createRequire } from "module";
3
- var VERSION = true ? "0.6.0" : readPackageVersion();
3
+ var VERSION = true ? "0.7.0" : readPackageVersion();
4
4
 
5
5
  // src/approvals.ts
6
6
  import { createHash, randomUUID } from "crypto";
package/dist/cli.js CHANGED
@@ -7,15 +7,15 @@ import {
7
7
  readTextFile,
8
8
  runChat,
9
9
  runRemote
10
- } from "./chunk-WDZUIVU7.js";
10
+ } from "./chunk-RC3FA7MX.js";
11
11
  import "./chunk-HYT732TN.js";
12
- import "./chunk-IXOE6XPI.js";
12
+ import "./chunk-GY5OOKGO.js";
13
13
  import {
14
14
  TOOL_RISKS,
15
15
  VERSION,
16
16
  printable,
17
17
  provenanceLabel
18
- } from "./chunk-4YOTNHWM.js";
18
+ } from "./chunk-VIFRLQO3.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-SYJM77VO.js");
330
+ const { startAssistantMcp } = await import("./mcp-server-SWAWVH77.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
1
  import {
2
2
  createStaticTokenAuth,
3
3
  createWorker
4
- } from "./chunk-4N722U3I.js";
4
+ } from "./chunk-NN5JJFPL.js";
5
5
  import {
6
6
  AnthropicProvider
7
- } from "./chunk-IXOE6XPI.js";
7
+ } from "./chunk-GY5OOKGO.js";
8
8
  import {
9
9
  ToolRegistry,
10
10
  VERSION,
11
11
  hasScope
12
- } from "./chunk-4YOTNHWM.js";
12
+ } from "./chunk-VIFRLQO3.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-UJIYGGF5.js";
4
+ } from "./chunk-BMIWTDEX.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-WDZUIVU7.js";
13
+ } from "./chunk-RC3FA7MX.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-IXOE6XPI.js";
19
+ } from "./chunk-GY5OOKGO.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-4YOTNHWM.js";
43
+ } from "./chunk-VIFRLQO3.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-UJIYGGF5.js";
5
- import "./chunk-WDZUIVU7.js";
4
+ } from "./chunk-BMIWTDEX.js";
5
+ import "./chunk-RC3FA7MX.js";
6
6
  import "./chunk-HYT732TN.js";
7
- import "./chunk-IXOE6XPI.js";
8
- import "./chunk-4YOTNHWM.js";
7
+ import "./chunk-GY5OOKGO.js";
8
+ import "./chunk-VIFRLQO3.js";
9
9
  import "./chunk-QTIEDY3V.js";
10
10
  export {
11
11
  createAssistantMcpServer,
package/dist/react.css CHANGED
@@ -1,13 +1,17 @@
1
1
  /* Plain CSS variables. They read the agentic-design tokens (--agd-color-*), so load
2
- agentic-design/tokens.css once on the page. Override --aa-* on .aa-panel or a parent to match your app.
2
+ agentic-design/tokens.css once on the page. Override --aa-* on .agd-assistant to match your app.
3
3
  Without the tokens, each variable falls back to a system color, so focus and borders stay visible.
4
- Every token pair meets WCAG 2.2 AA contrast in light and dark; src/react/styles.test.ts checks it.
4
+ The look is calm. Cards have soft borders. The text field, buttons, approval prompt, and warnings have a strong edge.
5
+ Space, radius, type, control size, and shadow come from the --agd-* tokens. Each has a fallback.
6
+ Each text, edge, and focus pair meets WCAG 2.2 AA contrast in light and dark; src/react/styles.test.ts checks them.
7
+ --aa-border is decoration only and is not checked, so do not use it for an edge people must see.
5
8
  No remote fonts or images. */
6
- .aa-panel {
9
+ .agd-assistant {
7
10
  --aa-bg: var(--agd-color-surface, Canvas);
8
11
  --aa-fg: var(--agd-color-text, CanvasText);
9
12
  --aa-muted: var(--agd-color-text-muted, CanvasText);
10
- --aa-border: var(--agd-color-border-strong, CanvasText);
13
+ --aa-border: var(--agd-color-border, CanvasText);
14
+ --aa-edge: var(--agd-color-border-strong, CanvasText);
11
15
  --aa-accent: var(--agd-color-accent, LinkText);
12
16
  --aa-accent-fg: var(--agd-color-text-on-accent, Canvas);
13
17
  --aa-focus: var(--agd-color-focus, LinkText);
@@ -17,6 +21,9 @@
17
21
  --aa-warn-bg: var(--agd-color-warning-subtle, Canvas);
18
22
  --aa-warn-fg: var(--agd-color-warning-text, CanvasText);
19
23
  --aa-danger: var(--agd-color-danger, LinkText);
24
+ --aa-hover-bg: var(--agd-color-surface-hover, Canvas);
25
+ --aa-accent-hover: var(--agd-color-accent-hover, LinkText);
26
+ --aa-shadow: var(--agd-shadow-raised, none);
20
27
 
21
28
  display: flex;
22
29
  flex-direction: column;
@@ -26,35 +33,39 @@
26
33
  background: var(--aa-bg);
27
34
  color: var(--aa-fg);
28
35
  border: 1px solid var(--aa-border);
29
- font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
36
+ border-radius: var(--agd-radius-lg, 1rem);
37
+ font-family: var(--agd-font-family-sans, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
30
38
  font-size: 1rem;
31
- line-height: 1.5;
39
+ line-height: var(--agd-line-height-normal, 1.55);
32
40
  }
33
- .aa-panel *, .aa-panel *::before, .aa-panel *::after { box-sizing: border-box; }
34
- .aa-header { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--aa-border); }
35
- .aa-title { margin: 0; font-size: 1.125rem; }
36
- .aa-log { flex: 1; overflow-y: auto; padding: 0.75rem; display: flex; flex-direction: column; gap: 0.75rem; }
37
- .aa-empty { color: var(--aa-muted); margin: 0; }
38
- .aa-msg { padding: 0.5rem 0.75rem; border: 1px solid var(--aa-border); border-radius: 0.5rem; }
39
- .aa-assistant { background: var(--aa-card-bg); }
40
- .aa-who { margin: 0 0 0.25rem; font-weight: 600; color: var(--aa-muted); }
41
- .aa-text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
42
- .aa-badge { display: inline-block; padding: 0 0.5rem; border-radius: 0.25rem; background: var(--aa-machine-bg); color: var(--aa-machine-fg); font-size: 0.875rem; font-weight: 600; border: 1px solid var(--aa-machine-fg); }
43
- .aa-card, .aa-approval { padding: 0.5rem 0.75rem; border: 1px solid var(--aa-border); border-radius: 0.5rem; background: var(--aa-card-bg); }
44
- .aa-card-head { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
45
- .aa-status { color: var(--aa-muted); font-weight: 600; }
46
- .aa-pre { margin: 0.25rem 0 0; padding: 0.5rem; max-height: 12rem; overflow: auto; background: var(--aa-bg); border: 1px solid var(--aa-border); white-space: pre-wrap; overflow-wrap: anywhere; font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 0.875rem; }
47
- .aa-approval { background: var(--aa-warn-bg); color: var(--aa-warn-fg); border-width: 2px; border-color: var(--aa-warn-fg); }
48
- .aa-approval-title { margin: 0 0 0.25rem; font-size: 1rem; display: flex; align-items: center; gap: 0.5rem; }
49
- .aa-warn { color: var(--aa-danger); background: var(--aa-bg); padding: 0.25rem 0.5rem; border: 2px solid var(--aa-danger); border-radius: 0.25rem; }
50
- .aa-notice { margin: 0; padding: 0.5rem 0.75rem; border: 1px solid var(--aa-border); border-radius: 0.5rem; }
51
- .aa-composer { display: flex; flex-direction: column; gap: 0.5rem; padding: 0.75rem; border-top: 1px solid var(--aa-border); }
52
- .aa-label { font-weight: 600; }
53
- .aa-input { width: 100%; resize: vertical; padding: 0.5rem; font: inherit; color: var(--aa-fg); background: var(--aa-bg); border: 1px solid var(--aa-border); border-radius: 0.25rem; }
54
- .aa-actions { display: flex; gap: 0.5rem; margin-top: 0.5rem; }
55
- .aa-composer .aa-actions { margin-top: 0; }
56
- .aa-button { min-height: 2rem; min-width: 2rem; padding: 0.25rem 1rem; font: inherit; font-weight: 600; color: var(--aa-fg); background: var(--aa-bg); border: 2px solid var(--aa-border); border-radius: 0.25rem; cursor: pointer; }
57
- .aa-button.aa-primary { color: var(--aa-accent-fg); background: var(--aa-accent); border-color: var(--aa-accent); }
58
- .aa-button:disabled { cursor: not-allowed; opacity: 0.6; }
59
- .aa-panel :focus-visible { outline: 3px solid var(--aa-focus); outline-offset: 2px; }
60
- @media (forced-colors: active) { .aa-badge, .aa-button, .aa-approval, .aa-warn { border: 2px solid CanvasText; } }
41
+ .agd-assistant *, .agd-assistant *::before, .agd-assistant *::after { box-sizing: border-box; }
42
+ .agd-assistant__header { display: flex; align-items: center; gap: var(--agd-space-2, 0.5rem); padding: var(--agd-space-3, 0.75rem) var(--agd-space-4, 1rem); border-bottom: 1px solid var(--aa-border); }
43
+ .agd-assistant__title { margin: 0; font-size: var(--agd-font-size-lg, 1.125rem); font-weight: 600; }
44
+ .agd-assistant__log { flex: 1; overflow-y: auto; padding: var(--agd-space-4, 1rem); display: flex; flex-direction: column; gap: var(--agd-space-3, 0.75rem); }
45
+ .agd-assistant__empty { color: var(--aa-muted); margin: 0; }
46
+ /* .agd-assistant__user is a hook for host overrides. It has no style of its own. */
47
+ .agd-assistant__msg { padding: var(--agd-space-3, 0.75rem) var(--agd-space-4, 1rem); border: 1px solid var(--aa-border); border-radius: var(--agd-radius-md, 0.5rem); }
48
+ .agd-assistant__assistant { background: var(--aa-card-bg); }
49
+ .agd-assistant__who { margin: 0 0 var(--agd-space-1, 0.25rem); font-size: var(--agd-font-size-sm, 0.875rem); font-weight: 600; color: var(--aa-muted); }
50
+ .agd-assistant__text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
51
+ .agd-assistant__badge { display: inline-block; padding: 0 var(--agd-space-2, 0.5rem); border-radius: var(--agd-radius-full, 9999px); background: var(--aa-machine-bg); color: var(--aa-machine-fg); font-size: var(--agd-font-size-xs, 0.75rem); font-weight: 600; line-height: 1.5rem; border: 1px solid transparent; }
52
+ .agd-assistant__card, .agd-assistant__approval { padding: var(--agd-space-3, 0.75rem) var(--agd-space-4, 1rem); border: 1px solid var(--aa-border); border-radius: var(--agd-radius-md, 0.5rem); background: var(--aa-card-bg); }
53
+ .agd-assistant__card-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--agd-space-2, 0.5rem); }
54
+ .agd-assistant__status { color: var(--aa-muted); font-size: var(--agd-font-size-sm, 0.875rem); font-weight: 600; }
55
+ .agd-assistant__pre { margin: var(--agd-space-1, 0.25rem) 0 0; padding: var(--agd-space-2, 0.5rem); max-height: 12rem; overflow: auto; background: var(--aa-bg); border: 1px solid var(--aa-edge); border-radius: var(--agd-radius-sm, 0.25rem); white-space: pre-wrap; overflow-wrap: anywhere; font-family: var(--agd-font-family-mono, ui-monospace, Menlo, Consolas, monospace); font-size: var(--agd-font-size-sm, 0.875rem); }
56
+ .agd-assistant__approval { background: var(--aa-warn-bg); color: var(--aa-warn-fg); border-width: 2px; border-color: var(--aa-warn-fg); box-shadow: var(--aa-shadow); }
57
+ .agd-assistant__approval-title { margin: 0 0 var(--agd-space-1, 0.25rem); font-size: 1rem; display: flex; align-items: center; gap: var(--agd-space-2, 0.5rem); }
58
+ .agd-assistant__warn { color: var(--aa-danger); background: var(--aa-bg); padding: var(--agd-space-1, 0.25rem) var(--agd-space-2, 0.5rem); border: 2px solid var(--aa-danger); border-radius: var(--agd-radius-sm, 0.25rem); }
59
+ .agd-assistant__notice { margin: 0; padding: var(--agd-space-3, 0.75rem) var(--agd-space-4, 1rem); border: 1px solid var(--aa-border); border-radius: var(--agd-radius-md, 0.5rem); }
60
+ .agd-assistant__composer { display: flex; flex-direction: column; gap: var(--agd-space-2, 0.5rem); padding: var(--agd-space-4, 1rem); border-top: 1px solid var(--aa-border); }
61
+ .agd-assistant__label { font-size: var(--agd-font-size-sm, 0.875rem); font-weight: 600; }
62
+ .agd-assistant__input { width: 100%; resize: vertical; padding: var(--agd-space-2, 0.5rem) var(--agd-space-3, 0.75rem); font: inherit; color: var(--aa-fg); background: var(--aa-bg); border: 1px solid var(--aa-edge); border-radius: var(--agd-radius-md, 0.5rem); }
63
+ .agd-assistant__actions { display: flex; gap: var(--agd-space-2, 0.5rem); margin-top: var(--agd-space-2, 0.5rem); }
64
+ .agd-assistant__composer .agd-assistant__actions { margin-top: 0; }
65
+ .agd-assistant__button { min-height: var(--agd-size-control, 2.25rem); min-width: 2rem; padding: var(--agd-space-1, 0.25rem) var(--agd-space-4, 1rem); font: inherit; font-weight: 600; color: var(--aa-fg); background: var(--aa-bg); border: 1px solid var(--aa-edge); border-radius: var(--agd-radius-md, 0.5rem); cursor: pointer; }
66
+ .agd-assistant__button.agd-assistant__primary { color: var(--aa-accent-fg); background: var(--aa-accent); border-color: var(--aa-accent); }
67
+ .agd-assistant__button:hover:not(:disabled) { background: var(--aa-hover-bg); }
68
+ .agd-assistant__button.agd-assistant__primary:hover:not(:disabled) { background: var(--aa-accent-hover); border-color: var(--aa-accent-hover); }
69
+ .agd-assistant__button:disabled { cursor: not-allowed; opacity: 0.6; border-style: dashed; }
70
+ .agd-assistant :focus-visible { outline: 2px solid var(--aa-focus); outline-offset: 2px; }
71
+ @media (forced-colors: active) { .agd-assistant, .agd-assistant__badge, .agd-assistant__button, .agd-assistant__approval, .agd-assistant__warn, .agd-assistant__msg, .agd-assistant__card { border: 2px solid CanvasText; } }
package/dist/react.js CHANGED
@@ -149,7 +149,7 @@ function useAssistant(options) {
149
149
  // src/react/panel.tsx
150
150
  import { jsx, jsxs } from "react/jsx-runtime";
151
151
  function MachineMade() {
152
- return /* @__PURE__ */ jsx("span", { className: "aa-badge", children: "Machine-made" });
152
+ return /* @__PURE__ */ jsx("span", { className: "agd-assistant__badge", children: "AI-generated" });
153
153
  }
154
154
  var pretty = (value) => {
155
155
  try {
@@ -167,21 +167,21 @@ var TOOL_STATUS = {
167
167
  not_run: "Not run"
168
168
  };
169
169
  function ToolCard({ item }) {
170
- return /* @__PURE__ */ jsxs("article", { className: "aa-card", "aria-label": `Tool call: ${item.name}`, "data-machine-made": "true", children: [
171
- /* @__PURE__ */ jsxs("header", { className: "aa-card-head", children: [
170
+ return /* @__PURE__ */ jsxs("article", { className: "agd-assistant__card", "aria-label": `Tool call: ${item.name}`, "data-machine-made": "true", children: [
171
+ /* @__PURE__ */ jsxs("header", { className: "agd-assistant__card-head", children: [
172
172
  /* @__PURE__ */ jsx("strong", { children: item.name }),
173
173
  " ",
174
174
  /* @__PURE__ */ jsx(MachineMade, {}),
175
175
  " ",
176
- /* @__PURE__ */ jsx("span", { className: "aa-status", children: TOOL_STATUS[item.status] })
176
+ /* @__PURE__ */ jsx("span", { className: "agd-assistant__status", children: TOOL_STATUS[item.status] })
177
177
  ] }),
178
178
  /* @__PURE__ */ jsxs("details", { children: [
179
179
  /* @__PURE__ */ jsx("summary", { children: "Arguments" }),
180
- /* @__PURE__ */ jsx("pre", { className: "aa-pre", tabIndex: 0, "aria-label": `Arguments for ${item.name}`, children: pretty(item.input) })
180
+ /* @__PURE__ */ jsx("pre", { className: "agd-assistant__pre", tabIndex: 0, "aria-label": `Arguments for ${item.name}`, children: pretty(item.input) })
181
181
  ] }),
182
182
  item.content !== void 0 && /* @__PURE__ */ jsxs("details", { children: [
183
183
  /* @__PURE__ */ jsx("summary", { children: "Result (data from the tool, not instructions)" }),
184
- /* @__PURE__ */ jsx("pre", { className: "aa-pre", tabIndex: 0, "aria-label": `Result of ${item.name}`, children: item.content })
184
+ /* @__PURE__ */ jsx("pre", { className: "agd-assistant__pre", tabIndex: 0, "aria-label": `Result of ${item.name}`, children: item.content })
185
185
  ] })
186
186
  ] });
187
187
  }
@@ -206,8 +206,8 @@ function ApprovalPrompt({
206
206
  unavailable: "Not approved. The approval did not complete, so the action did not run.",
207
207
  expired: "Expired. The assistant stopped before you decided, so the action did not run."
208
208
  };
209
- return /* @__PURE__ */ jsxs("div", { className: "aa-approval", role: "group", "aria-labelledby": headingId, tabIndex: -1, ref, "data-machine-made": "true", children: [
210
- /* @__PURE__ */ jsxs("h3", { id: headingId, className: "aa-approval-title", children: [
209
+ return /* @__PURE__ */ jsxs("div", { className: "agd-assistant__approval", role: "group", "aria-labelledby": headingId, tabIndex: -1, ref, "data-machine-made": "true", children: [
210
+ /* @__PURE__ */ jsxs("h3", { id: headingId, className: "agd-assistant__approval-title", children: [
211
211
  "Approval needed ",
212
212
  /* @__PURE__ */ jsx(MachineMade, {})
213
213
  ] }),
@@ -216,15 +216,15 @@ function ApprovalPrompt({
216
216
  /* @__PURE__ */ jsx("strong", { children: item.tool }),
217
217
  "."
218
218
  ] }),
219
- item.risk === "irreversible" ? /* @__PURE__ */ jsxs("p", { className: "aa-warn", children: [
219
+ item.risk === "irreversible" ? /* @__PURE__ */ jsxs("p", { className: "agd-assistant__warn", children: [
220
220
  /* @__PURE__ */ jsx("strong", { children: "Warning:" }),
221
221
  " This cannot be undone."
222
222
  ] }) : /* @__PURE__ */ jsx("p", { children: "This can change data." }),
223
- /* @__PURE__ */ jsx("pre", { className: "aa-pre", tabIndex: 0, "aria-label": `Exact arguments for ${item.tool}`, children: pretty(item.input) }),
224
- item.status === "pending" ? /* @__PURE__ */ jsxs("div", { className: "aa-actions", children: [
225
- /* @__PURE__ */ jsx("button", { type: "button", className: "aa-button aa-primary", disabled: item.busy, "aria-label": `Approve ${item.tool}`, onClick: () => answer(true), children: "Approve" }),
226
- /* @__PURE__ */ jsx("button", { type: "button", className: "aa-button", disabled: item.busy, "aria-label": `Decline ${item.tool}`, onClick: () => answer(false), children: "Decline" })
227
- ] }) : /* @__PURE__ */ jsx("p", { className: "aa-status", children: outcome[item.status] })
223
+ /* @__PURE__ */ jsx("pre", { className: "agd-assistant__pre", tabIndex: 0, "aria-label": `Exact arguments for ${item.tool}`, children: pretty(item.input) }),
224
+ item.status === "pending" ? /* @__PURE__ */ jsxs("div", { className: "agd-assistant__actions", children: [
225
+ /* @__PURE__ */ jsx("button", { type: "button", className: "agd-assistant__button agd-assistant__primary", disabled: item.busy, "aria-label": `Approve ${item.tool}`, onClick: () => answer(true), children: "Approve" }),
226
+ /* @__PURE__ */ jsx("button", { type: "button", className: "agd-assistant__button", disabled: item.busy, "aria-label": `Decline ${item.tool}`, onClick: () => answer(false), children: "Decline" })
227
+ ] }) : /* @__PURE__ */ jsx("p", { className: "agd-assistant__status", children: outcome[item.status] })
228
228
  ] });
229
229
  }
230
230
  function AssistantPanel({ title = "AI assistant", run, decide }) {
@@ -250,15 +250,15 @@ function AssistantPanel({ title = "AI assistant", run, decide }) {
250
250
  submit();
251
251
  }
252
252
  };
253
- return /* @__PURE__ */ jsxs("section", { className: "aa-panel", "aria-label": title, children: [
254
- /* @__PURE__ */ jsxs("header", { className: "aa-header", children: [
255
- /* @__PURE__ */ jsx("h2", { className: "aa-title", children: title }),
253
+ return /* @__PURE__ */ jsxs("section", { className: "agd-assistant", "aria-label": title, children: [
254
+ /* @__PURE__ */ jsxs("header", { className: "agd-assistant__header", children: [
255
+ /* @__PURE__ */ jsx("h2", { className: "agd-assistant__title", children: title }),
256
256
  /* @__PURE__ */ jsx(MachineMade, {})
257
257
  ] }),
258
258
  /* @__PURE__ */ jsxs(
259
259
  "div",
260
260
  {
261
- className: "aa-log",
261
+ className: "agd-assistant__log",
262
262
  role: "log",
263
263
  "aria-live": "polite",
264
264
  "aria-relevant": "additions text",
@@ -270,28 +270,28 @@ function AssistantPanel({ title = "AI assistant", run, decide }) {
270
270
  pinned.current = el.scrollHeight - el.scrollTop - el.clientHeight < 24;
271
271
  },
272
272
  children: [
273
- items.length === 0 && /* @__PURE__ */ jsx("p", { className: "aa-empty", children: "Ask the assistant to help. It acts only with your permissions, and it asks you before a risky action." }),
273
+ items.length === 0 && /* @__PURE__ */ jsx("p", { className: "agd-assistant__empty", children: "Ask the assistant to help. It acts only with your permissions, and it asks you before a risky action." }),
274
274
  items.map((item) => {
275
275
  switch (item.kind) {
276
276
  case "user":
277
- return /* @__PURE__ */ jsxs("div", { className: "aa-msg aa-user", children: [
278
- /* @__PURE__ */ jsx("p", { className: "aa-who", children: "You" }),
279
- /* @__PURE__ */ jsx("p", { className: "aa-text", children: item.text })
277
+ return /* @__PURE__ */ jsxs("div", { className: "agd-assistant__msg agd-assistant__user", children: [
278
+ /* @__PURE__ */ jsx("p", { className: "agd-assistant__who", children: "You" }),
279
+ /* @__PURE__ */ jsx("p", { className: "agd-assistant__text", children: item.text })
280
280
  ] }, item.id);
281
281
  case "assistant":
282
- return /* @__PURE__ */ jsxs("div", { className: "aa-msg aa-assistant", "data-machine-made": "true", "aria-busy": item.streaming, children: [
283
- /* @__PURE__ */ jsxs("p", { className: "aa-who", children: [
282
+ return /* @__PURE__ */ jsxs("div", { className: "agd-assistant__msg agd-assistant__assistant", "data-machine-made": "true", "aria-busy": item.streaming, children: [
283
+ /* @__PURE__ */ jsxs("p", { className: "agd-assistant__who", children: [
284
284
  "Assistant ",
285
285
  /* @__PURE__ */ jsx(MachineMade, {})
286
286
  ] }),
287
- /* @__PURE__ */ jsx("p", { className: "aa-text", children: item.text })
287
+ /* @__PURE__ */ jsx("p", { className: "agd-assistant__text", children: item.text })
288
288
  ] }, item.id);
289
289
  case "tool":
290
290
  return /* @__PURE__ */ jsx(ToolCard, { item }, item.id);
291
291
  case "approval":
292
292
  return /* @__PURE__ */ jsx(ApprovalPrompt, { item, decide: decideRequest, focusComposer: () => input.current?.focus() }, item.id);
293
293
  case "notice":
294
- return /* @__PURE__ */ jsxs("p", { className: "aa-notice", children: [
294
+ return /* @__PURE__ */ jsxs("p", { className: "agd-assistant__notice", children: [
295
295
  /* @__PURE__ */ jsx("strong", { children: "Notice:" }),
296
296
  " ",
297
297
  item.text
@@ -304,17 +304,17 @@ function AssistantPanel({ title = "AI assistant", run, decide }) {
304
304
  /* @__PURE__ */ jsxs(
305
305
  "form",
306
306
  {
307
- className: "aa-composer",
307
+ className: "agd-assistant__composer",
308
308
  onSubmit: (event) => {
309
309
  event.preventDefault();
310
310
  submit();
311
311
  },
312
312
  children: [
313
- /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "aa-label", children: "Message the assistant" }),
314
- /* @__PURE__ */ jsx("textarea", { id: inputId, className: "aa-input", rows: 3, value: draft, ref: input, onChange: (event) => setDraft(event.target.value), onKeyDown }),
315
- /* @__PURE__ */ jsxs("div", { className: "aa-actions", children: [
316
- /* @__PURE__ */ jsx("button", { type: "submit", className: "aa-button aa-primary", disabled: running || draft.trim() === "", children: "Send" }),
317
- running && /* @__PURE__ */ jsx("button", { type: "button", className: "aa-button", onClick: stop, children: "Stop" })
313
+ /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "agd-assistant__label", children: "Message the assistant" }),
314
+ /* @__PURE__ */ jsx("textarea", { id: inputId, className: "agd-assistant__input", rows: 3, value: draft, ref: input, onChange: (event) => setDraft(event.target.value), onKeyDown }),
315
+ /* @__PURE__ */ jsxs("div", { className: "agd-assistant__actions", children: [
316
+ /* @__PURE__ */ jsx("button", { type: "submit", className: "agd-assistant__button agd-assistant__primary", disabled: running || draft.trim() === "", children: "Send" }),
317
+ running && /* @__PURE__ */ jsx("button", { type: "button", className: "agd-assistant__button", onClick: stop, children: "Stop" })
318
318
  ] })
319
319
  ]
320
320
  }
package/dist/worker.js CHANGED
@@ -3,8 +3,8 @@ import {
3
3
  createAssistantApi,
4
4
  createStaticTokenAuth,
5
5
  createWorker
6
- } from "./chunk-4N722U3I.js";
7
- import "./chunk-4YOTNHWM.js";
6
+ } from "./chunk-NN5JJFPL.js";
7
+ import "./chunk-VIFRLQO3.js";
8
8
  export {
9
9
  APPROVER_SCOPE,
10
10
  createAssistantApi,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-assistant",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "An AI assistant that acts inside your apps with the user's own permissions.",
5
5
  "keywords": [
6
6
  "assistant",
@@ -74,7 +74,7 @@
74
74
  "dependencies": {
75
75
  "@anthropic-ai/sdk": "^1.3.0",
76
76
  "@modelcontextprotocol/sdk": "^1.32.2",
77
- "agentic-identity": "^0.7.0",
77
+ "agentic-identity": "^0.8.0",
78
78
  "ajv": "^8.20.0"
79
79
  },
80
80
  "devDependencies": {
@@ -84,7 +84,7 @@
84
84
  "@types/node": "^22.0.0",
85
85
  "@types/react": "^19.3.0",
86
86
  "@types/react-dom": "^19.3.0",
87
- "agentic-design": "^0.4.0",
87
+ "agentic-design": "^0.5.0",
88
88
  "jsdom": "^30.1.3",
89
89
  "react": "^19.3.1",
90
90
  "react-dom": "^19.3.1",
@@ -94,7 +94,7 @@
94
94
  "wrangler": "^4.155.0"
95
95
  },
96
96
  "peerDependencies": {
97
- "agentic-design": "^0.4.0",
97
+ "agentic-design": "^0.5.0",
98
98
  "react": ">=18"
99
99
  },
100
100
  "peerDependenciesMeta": {