@rubytech/create-realagent-code 0.1.30 → 0.1.31
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/package.json +1 -1
- package/payload/platform/lib/persistent-components/dist/index.d.ts +11 -12
- package/payload/platform/lib/persistent-components/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/persistent-components/dist/index.js +11 -12
- package/payload/platform/lib/persistent-components/dist/index.js.map +1 -1
- package/payload/platform/lib/persistent-components/src/index.ts +11 -12
- package/payload/platform/neo4j/schema.cypher +6 -3
- package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/admin/PLUGIN.md +1 -3
- package/payload/platform/plugins/admin/hooks/onboarding-skill-drift.sh +5 -4
- package/payload/platform/plugins/admin/mcp/dist/index.js +15 -50
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/skills/access-manager/references/operations.md +7 -7
- package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +1 -1
- package/payload/platform/plugins/admin/skills/stream-log-review/references/analysis-patterns.md +2 -2
- package/payload/platform/plugins/anthropic/skills/get-api-key/SKILL.md +2 -4
- package/payload/platform/plugins/email/references/email-reference.md +3 -7
- package/payload/platform/plugins/teaching/PLUGIN.md +2 -1
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js +1 -1
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +1 -1
- package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +2 -8
- package/payload/platform/plugins/writer-craft/PLUGIN.md +2 -1
- package/payload/platform/scripts/component-knowledgedoc-backfill.ts +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +45 -31
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +11 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts +30 -0
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js +175 -0
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts +4 -2
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +15 -22
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +13 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +26 -4
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +9 -0
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +10 -7
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js +51 -28
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
- package/payload/platform/services/claude-session-manager/scripts/onboarding-advance.sh +61 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-0.md +5 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-1.md +3 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-2.md +3 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-3.md +8 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-4.md +9 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-5.md +3 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-6.md +5 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-7.md +5 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-8.md +5 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-9.md +8 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-complete.md +3 -0
- package/payload/platform/services/claude-session-manager/scripts/onboarding-prompts/step-unreachable.md +3 -0
- package/payload/platform/templates/agents/public/IDENTITY.md +1 -1
- package/payload/platform/templates/specialists/agents/content-producer.md +3 -3
- package/payload/platform/templates/specialists/agents/personal-assistant.md +2 -2
- package/payload/premium-plugins/teaching/PLUGIN.md +2 -1
- package/payload/premium-plugins/writer-craft/PLUGIN.md +2 -1
- package/payload/server/public/assets/{admin-CDvF5de6.js → admin-Bk2eXMFD.js} +24 -24
- package/payload/server/public/assets/{data-K_kS__sL.js → data-ll_OwVNL.js} +1 -1
- package/payload/server/public/assets/{graph-DeEigyO_.js → graph-DJ2VWioQ.js} +1 -1
- package/payload/server/public/assets/graph-labels-qhU8xZDH.js +1 -0
- package/payload/server/public/assets/{page-qSH972X0.js → page-Dk73ZO1F.js} +1 -1
- package/payload/server/public/assets/{page-B_rpjIRr.js → page-DsYsdBUK.js} +1 -1
- package/payload/server/public/data.html +3 -3
- package/payload/server/public/graph.html +3 -3
- package/payload/server/public/index.html +4 -4
- package/payload/server/server.js +121 -46
- package/payload/platform/plugins/admin/references/contextual-ui.md +0 -109
- package/payload/platform/scripts/__tests__/admin-persist-audit.test.ts +0 -182
- package/payload/server/public/assets/graph-labels-C7I5QvNv.js +0 -1
package/package.json
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The component names
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* stream-parser materialises the inline content as a sibling
|
|
8
|
-
* `:KnowledgeDocument` artefact so the row appears in the artefacts
|
|
9
|
-
* panel and survives session compaction.
|
|
2
|
+
* The historical persistent-component names. Pre-Task-066 the admin
|
|
3
|
+
* agent could emit a component tool_use carrying one of these names,
|
|
4
|
+
* and the live stream-parser materialised the inline content as a
|
|
5
|
+
* sibling `:KnowledgeDocument` artefact so the row appeared in the
|
|
6
|
+
* artefacts panel and survived session compaction.
|
|
10
7
|
*
|
|
11
|
-
*
|
|
12
|
-
* the
|
|
13
|
-
*
|
|
14
|
-
*
|
|
8
|
+
* The emitting tool is gone on native Claude Code (Task 066); the
|
|
9
|
+
* constant is preserved so the rehydration path can still recognise
|
|
10
|
+
* `:Component` rows written by older conversations. New conversations
|
|
11
|
+
* never produce these rows. The single-source-of-truth contract still
|
|
12
|
+
* holds: `app/admin-types.ts` and any consumer that needs to classify
|
|
13
|
+
* a stored component name imports from here.
|
|
15
14
|
*/
|
|
16
15
|
export declare const PERSISTENT_COMPONENTS: Set<string>;
|
|
17
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,aAKhC,CAAC;AAEH;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAE9E"}
|
|
@@ -3,19 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PERSISTENT_COMPONENTS = void 0;
|
|
4
4
|
exports.isPersistentComponent = isPersistentComponent;
|
|
5
5
|
/**
|
|
6
|
-
* The component names
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* stream-parser materialises the inline content as a sibling
|
|
12
|
-
* `:KnowledgeDocument` artefact so the row appears in the artefacts
|
|
13
|
-
* panel and survives session compaction.
|
|
6
|
+
* The historical persistent-component names. Pre-Task-066 the admin
|
|
7
|
+
* agent could emit a component tool_use carrying one of these names,
|
|
8
|
+
* and the live stream-parser materialised the inline content as a
|
|
9
|
+
* sibling `:KnowledgeDocument` artefact so the row appeared in the
|
|
10
|
+
* artefacts panel and survived session compaction.
|
|
14
11
|
*
|
|
15
|
-
*
|
|
16
|
-
* the
|
|
17
|
-
*
|
|
18
|
-
*
|
|
12
|
+
* The emitting tool is gone on native Claude Code (Task 066); the
|
|
13
|
+
* constant is preserved so the rehydration path can still recognise
|
|
14
|
+
* `:Component` rows written by older conversations. New conversations
|
|
15
|
+
* never produce these rows. The single-source-of-truth contract still
|
|
16
|
+
* holds: `app/admin-types.ts` and any consumer that needs to classify
|
|
17
|
+
* a stored component name imports from here.
|
|
19
18
|
*/
|
|
20
19
|
exports.PERSISTENT_COMPONENTS = new Set([
|
|
21
20
|
'action-list',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAwBA,sDAEC;AA1BD;;;;;;;;;;;;;GAaG;AACU,QAAA,qBAAqB,GAAG,IAAI,GAAG,CAAS;IACnD,aAAa;IACb,iBAAiB;IACjB,qBAAqB;IACrB,aAAa;CACd,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,qBAAqB,CAAC,IAA+B;IACnE,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,6BAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The component names
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* stream-parser materialises the inline content as a sibling
|
|
8
|
-
* `:KnowledgeDocument` artefact so the row appears in the artefacts
|
|
9
|
-
* panel and survives session compaction.
|
|
2
|
+
* The historical persistent-component names. Pre-Task-066 the admin
|
|
3
|
+
* agent could emit a component tool_use carrying one of these names,
|
|
4
|
+
* and the live stream-parser materialised the inline content as a
|
|
5
|
+
* sibling `:KnowledgeDocument` artefact so the row appeared in the
|
|
6
|
+
* artefacts panel and survived session compaction.
|
|
10
7
|
*
|
|
11
|
-
*
|
|
12
|
-
* the
|
|
13
|
-
*
|
|
14
|
-
*
|
|
8
|
+
* The emitting tool is gone on native Claude Code (Task 066); the
|
|
9
|
+
* constant is preserved so the rehydration path can still recognise
|
|
10
|
+
* `:Component` rows written by older conversations. New conversations
|
|
11
|
+
* never produce these rows. The single-source-of-truth contract still
|
|
12
|
+
* holds: `app/admin-types.ts` and any consumer that needs to classify
|
|
13
|
+
* a stored component name imports from here.
|
|
15
14
|
*/
|
|
16
15
|
export const PERSISTENT_COMPONENTS = new Set<string>([
|
|
17
16
|
'action-list',
|
|
@@ -911,9 +911,12 @@ FOR (tc:ToolCall) ON (tc.accountId, tc.startedAt);
|
|
|
911
911
|
// ----------------------------------------------------------
|
|
912
912
|
// Component — Task 815 admin-resume rehydration.
|
|
913
913
|
//
|
|
914
|
-
//
|
|
915
|
-
//
|
|
916
|
-
// (Message)-[:HAS_COMPONENT]->(Component).
|
|
914
|
+
// Each legacy component event emitted on an assistant turn (pre-066
|
|
915
|
+
// admin agent surface only) produced one Component node linked to its
|
|
916
|
+
// parent Message via (Message)-[:HAS_COMPONENT]->(Component). New
|
|
917
|
+
// conversations never write to this table; the rehydration path keeps
|
|
918
|
+
// the rows in place so historical conversations replay intact. The
|
|
919
|
+
// agent's narrative
|
|
917
920
|
// text stays on Message.content; component name + data JSON +
|
|
918
921
|
// position-relative-to-text live here. Sibling-node design (not
|
|
919
922
|
// JSON-on-Message) avoids Neo4j's 128KB property soft-limit when
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "admin",
|
|
3
|
-
"description": "Platform administration plugin. Provides system-status, public-hostname (deterministic Cloudflare public-URL resolver, single call returning the operator's canonical hostname so agents never guess property names on :CloudflareHostname nodes), brand-settings, account-manage, account-update, admin-add, admin-remove, admin-list, admin-update-pin, agent-list, agent-config-read, logs-read, plugin-read, skill-load (one-call resolve+read for SKILL.md by skill name, the canonical primitive for loading a named skill; plugin-read remains the reader for references/* and PLUGIN.md), store-skill (deterministic write counterpart to plugin-read; persists operator-authored skills as plugin files under the active account), session-reset, session-resume, file-attach, wifi, and action-approval tools (action-pending, action-approve, action-reject, action-edit) for managing the Maxy platform.
|
|
3
|
+
"description": "Platform administration plugin. Provides system-status, public-hostname (deterministic Cloudflare public-URL resolver, single call returning the operator's canonical hostname so agents never guess property names on :CloudflareHostname nodes), brand-settings, account-manage, account-update, admin-add, admin-remove, admin-list, admin-update-pin, agent-list, agent-config-read, logs-read, plugin-read, skill-load (one-call resolve+read for SKILL.md by skill name, the canonical primitive for loading a named skill; plugin-read remains the reader for references/* and PLUGIN.md), store-skill (deterministic write counterpart to plugin-read; persists operator-authored skills as plugin files under the active account), session-reset, session-resume, file-attach, wifi, and action-approval tools (action-pending, action-approve, action-reject, action-edit) for managing the Maxy platform.",
|
|
4
4
|
"version": "0.1.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rubytech LLC"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: admin
|
|
3
|
-
description: "Platform administration plugin. Provides system-status, public-hostname (deterministic Cloudflare public-URL resolver, single call returning the operator's canonical hostname so agents never guess property names on :CloudflareHostname nodes), brand-settings, account-manage, account-update, admin-add, admin-remove, admin-list, admin-update-pin, agent-list, agent-config-read, logs-read, plugin-read, skill-load (one-call resolve+read for SKILL.md by skill name, the canonical primitive for loading a named skill; plugin-read remains the reader for references/* and PLUGIN.md), store-skill (deterministic write counterpart to plugin-read; persists operator-authored skills as plugin files under the active account), session-reset, session-resume, file-attach, wifi, and action-approval tools (action-pending, action-approve, action-reject, action-edit) for managing the Maxy platform.
|
|
3
|
+
description: "Platform administration plugin. Provides system-status, public-hostname (deterministic Cloudflare public-URL resolver, single call returning the operator's canonical hostname so agents never guess property names on :CloudflareHostname nodes), brand-settings, account-manage, account-update, admin-add, admin-remove, admin-list, admin-update-pin, agent-list, agent-config-read, logs-read, plugin-read, skill-load (one-call resolve+read for SKILL.md by skill name, the canonical primitive for loading a named skill; plugin-read remains the reader for references/* and PLUGIN.md), store-skill (deterministic write counterpart to plugin-read; persists operator-authored skills as plugin files under the active account), session-reset, session-resume, file-attach, wifi, and action-approval tools (action-pending, action-approve, action-reject, action-edit) for managing the Maxy platform."
|
|
4
4
|
tools:
|
|
5
5
|
- name: system-status
|
|
6
6
|
publicAllowlist: false
|
|
@@ -32,8 +32,6 @@ tools:
|
|
|
32
32
|
publicAllowlist: false
|
|
33
33
|
- name: store-skill
|
|
34
34
|
publicAllowlist: false
|
|
35
|
-
- name: render-component
|
|
36
|
-
publicAllowlist: false
|
|
37
35
|
- name: session-reset
|
|
38
36
|
publicAllowlist: false
|
|
39
37
|
- name: session-resume
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Task 063 /
|
|
3
|
-
# drift on the native Claude Code (PTY) surface.
|
|
4
|
-
#
|
|
5
|
-
#
|
|
2
|
+
# Task 063 / 066. Stop-event hook that flags admin agent onboarding
|
|
3
|
+
# drift on the native Claude Code (PTY) surface. The contract is "the
|
|
4
|
+
# assistant ends its turn on a prompt the operator can answer" — no
|
|
5
|
+
# named tool, no per-turn imperative, just a chat-surface end-state
|
|
6
|
+
# check.
|
|
6
7
|
#
|
|
7
8
|
# Behaviour:
|
|
8
9
|
# 1. Read transcript_path from the Stop event JSON on stdin.
|
|
@@ -10,7 +10,6 @@ import { execFileSync } from "node:child_process";
|
|
|
10
10
|
import { appendFileSync, cpSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
11
11
|
import { writeKey, validateKey, hasKey, keyFilePath, deleteKey } from "../../../../lib/anthropic-key/dist/index.js";
|
|
12
12
|
import { writeAdminEntry, removeAdminFromAccount } from "../../../../lib/admins-write/dist/index.js";
|
|
13
|
-
import { isPersistentComponent } from "../../../../lib/persistent-components/dist/index.js";
|
|
14
13
|
import { deviceUrlBlock } from "../../../../lib/device-url/dist/index.js";
|
|
15
14
|
import { substituteBrandPlaceholders } from "../../../../lib/brand-templating/dist/index.js";
|
|
16
15
|
import { resolveEntitlement } from "../../../../lib/entitlement/dist/index.js";
|
|
@@ -507,7 +506,7 @@ const PLUGIN_DISPLAY = {
|
|
|
507
506
|
waitlist: { value: "waitlist", label: "waitlist", description: "Waitlist lifecycle — extract sign-ups, review, schedule automation." },
|
|
508
507
|
replicate: { value: "replicate", label: "replicate", description: "Image generation — photorealistic, design, and fast draft images via Replicate. Enhances: content-producer, research-assistant" },
|
|
509
508
|
};
|
|
510
|
-
server.tool("onboarding-plugin-options", "Return the fully-assembled
|
|
509
|
+
server.tool("onboarding-plugin-options", "Return the fully-assembled plugin options array for onboarding Step 1. Classification (core/recommended/available) is derived from brand.json — the agent presents the entries to the operator as a numbered list in plain chat without further transformation.", {}, async () => {
|
|
511
510
|
try {
|
|
512
511
|
const brandPath = resolve(PLATFORM_ROOT, "config", "brand.json");
|
|
513
512
|
if (!existsSync(brandPath)) {
|
|
@@ -1769,50 +1768,15 @@ eagerTool(server, "skill-load", "Load a plugin skill's SKILL.md body by skill na
|
|
|
1769
1768
|
};
|
|
1770
1769
|
}
|
|
1771
1770
|
});
|
|
1772
|
-
// Task
|
|
1773
|
-
//
|
|
1774
|
-
//
|
|
1775
|
-
//
|
|
1776
|
-
//
|
|
1777
|
-
//
|
|
1778
|
-
//
|
|
1779
|
-
//
|
|
1780
|
-
//
|
|
1781
|
-
// in the admin server process (stream-parser path) because the SDK delivers
|
|
1782
|
-
// `tool_use.input` to the UI in the assistant message but the MCP handler's
|
|
1783
|
-
// return reaches only the agent — there is no path back to persistMessage
|
|
1784
|
-
// from here. This handler emits a one-line observability marker per
|
|
1785
|
-
// persistence-eligible call so operators can grep for the commitment, and
|
|
1786
|
-
// returns richer JSON so the doctrine grep
|
|
1787
|
-
// `render-component.*"rendered"` resolves to a persistence-aware handler
|
|
1788
|
-
// rather than a bare stub.
|
|
1789
|
-
eagerTool(server, "render-component", "Render a pre-built UI component inline in the conversation. " +
|
|
1790
|
-
"Call this instead of describing a UI — the component handles input collection. " +
|
|
1791
|
-
"Wait for the user's response before continuing.", {
|
|
1792
|
-
name: z.string().describe("Component name from the UI suite (e.g. single-select, confirm, info-card, form, progress)"),
|
|
1793
|
-
data: z.record(z.string(), z.unknown()),
|
|
1794
|
-
}, async ({ name, data }) => {
|
|
1795
|
-
if (isPersistentComponent(name)) {
|
|
1796
|
-
// Persistence-eligible: log the commitment so the live + audit grep
|
|
1797
|
-
// (`[render-component-persist]`) can correlate the MCP call against
|
|
1798
|
-
// the downstream :KnowledgeDocument MERGE. Byte counts come from
|
|
1799
|
-
// data.html (preferred) or data.content; both being absent is a
|
|
1800
|
-
// legitimate render of an empty editor and the projection is skipped
|
|
1801
|
-
// server-side.
|
|
1802
|
-
const html = typeof data?.html === "string" ? data.html : "";
|
|
1803
|
-
const content = typeof data?.content === "string" ? data.content : "";
|
|
1804
|
-
const bytes = html.length > 0 ? html.length : content.length;
|
|
1805
|
-
const mimeType = html.length > 0 ? "text/html" : (content.length > 0 ? "text/markdown" : "");
|
|
1806
|
-
console.error(`[render-component-persist] componentName=${name} bytes=${bytes} mimeType=${mimeType || "none"}`);
|
|
1807
|
-
return {
|
|
1808
|
-
content: [{
|
|
1809
|
-
type: "text",
|
|
1810
|
-
text: JSON.stringify({ rendered: true, name, persistent: true, bytes, mimeType }),
|
|
1811
|
-
}],
|
|
1812
|
-
};
|
|
1813
|
-
}
|
|
1814
|
-
return { content: [{ type: "text", text: "rendered" }] };
|
|
1815
|
-
});
|
|
1771
|
+
// Task 066 — the inline UI-component tool is gone from the admin surface
|
|
1772
|
+
// on native Claude Code. The PTY runtime has no host bridge for the UI
|
|
1773
|
+
// primitives the legacy tool wrapped; calling it logged a "rendered"
|
|
1774
|
+
// sentinel that read like a successful render to the agent while the
|
|
1775
|
+
// chat surface saw nothing. Admin flows now use plain markdown for
|
|
1776
|
+
// reviewable artefacts (`skills/file-presentation/SKILL.md`) and
|
|
1777
|
+
// `file-attach` for downloadable artefacts. The :Component / :KnowledgeDocument
|
|
1778
|
+
// persistence pipeline is preserved for historical conversations that
|
|
1779
|
+
// already carry the rows; no new conversations write to it.
|
|
1816
1780
|
eagerTool(server, "session-reset", "Reset the current session. Compacts conversation history to memory, clears the visible conversation, " +
|
|
1817
1781
|
"and starts a fresh session with a new greeting. Call when the user asks to start a new session, " +
|
|
1818
1782
|
"clear the conversation, or start fresh.", {}, async () => ({ content: [{ type: "text", text: "reset" }] }));
|
|
@@ -2984,10 +2948,11 @@ server.tool("premium-deliver", "Deliver a purchased premium plugin. Copies plugi
|
|
|
2984
2948
|
// file-attach — copy a generated file into the attachment store for download
|
|
2985
2949
|
// ---------------------------------------------------------------------------
|
|
2986
2950
|
eagerTool(server, "file-attach", "Attach a file from the account directory for delivery to the user. " +
|
|
2987
|
-
"Copies the file into the attachment store and returns metadata
|
|
2988
|
-
"
|
|
2989
|
-
"
|
|
2990
|
-
"
|
|
2951
|
+
"Copies the file into the attachment store and returns metadata the chat " +
|
|
2952
|
+
"surface uses to present the download. The file must be within the account " +
|
|
2953
|
+
"directory tree. The returned metadata is the operator-visible record of the " +
|
|
2954
|
+
"attachment; quote it back to the user in plain text so they have the filename " +
|
|
2955
|
+
"and size on screen.", {
|
|
2991
2956
|
filePath: z.string().describe("Absolute path to the file to attach"),
|
|
2992
2957
|
}, async ({ filePath }) => {
|
|
2993
2958
|
const TAG = "[file-attach]";
|