@4djs/assistant 0.1.1 → 0.1.2
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/README.md +34 -1
- package/dist/core/create-assistant-store.d.ts +1 -0
- package/dist/core/create-assistant-store.d.ts.map +1 -1
- package/dist/core/index.d.ts +8 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1968 -807
- package/dist/core/interactive-tools/gate.d.ts +14 -0
- package/dist/core/interactive-tools/gate.d.ts.map +1 -0
- package/dist/core/interactive-tools/index.d.ts +1 -0
- package/dist/core/interactive-tools/index.d.ts.map +1 -1
- package/dist/core/llm-chat.d.ts.map +1 -1
- package/dist/core/llm-provider.d.ts.map +1 -1
- package/dist/core/markdown-utils.d.ts +1 -2
- package/dist/core/markdown-utils.d.ts.map +1 -1
- package/dist/core/system-prompt.d.ts +3 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/tool-names.d.ts +5 -0
- package/dist/core/tool-names.d.ts.map +1 -0
- package/dist/core/tool-registry.d.ts +28 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/types.d.ts +5 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.js +521 -4007
- package/dist/react/Assistant.d.ts.map +1 -1
- package/dist/react/components/HighlightedJsonCode.d.ts.map +1 -1
- package/dist/react/components/MarkdownContent.d.ts.map +1 -1
- package/dist/react/components/chat/ChatActivity.d.ts.map +1 -1
- package/dist/react/components/highlighted-code.d.ts.map +1 -1
- package/dist/react/context.d.ts +2 -2
- package/dist/react/context.d.ts.map +1 -1
- package/dist/react/hooks/use-composer-commands.d.ts +1 -1
- package/dist/react/hooks/use-composer-commands.d.ts.map +1 -1
- package/dist/react/hooks/use-suggested-prompts.d.ts +1 -1
- package/dist/react/hooks/use-suggested-prompts.d.ts.map +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/types.d.ts +3 -2
- package/dist/react/types.d.ts.map +1 -1
- package/dist/styles.css +80 -0
- package/dist/tools/datastore.d.ts +28 -0
- package/dist/tools/datastore.d.ts.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +249 -0
- package/package.json +11 -6
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ npm install @4djs/assistant
|
|
|
10
10
|
bun add @4djs/assistant
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
Peer dependencies: `react` and `react-dom` (^19).
|
|
13
|
+
Peer dependencies: `react` and `react-dom` (^18 or ^19). React is not bundled — your app supplies it.
|
|
14
14
|
|
|
15
15
|
Import styles once in your app entry (required for the UI):
|
|
16
16
|
|
|
@@ -64,12 +64,45 @@ When no LLM is configured, chat input is disabled and the UI prompts users to op
|
|
|
64
64
|
|
|
65
65
|
### Required store hooks
|
|
66
66
|
|
|
67
|
+
Provide **`toolRegistry`** (recommended) or both **`listTools`** and **`invokeTool`**:
|
|
68
|
+
|
|
67
69
|
| Option | Description |
|
|
68
70
|
| --- | --- |
|
|
69
71
|
| `welcomeMessage(ctx)` | Returns the initial assistant message. Called again when LLM status or model changes. |
|
|
72
|
+
| `toolRegistry` | `AssistantToolRegistry` from `createAssistantToolRegistry()` — register, deactivate, and invoke tools in one place. |
|
|
70
73
|
| `listTools()` | Returns OpenAI-style tool definitions (`name`, `description`, `inputSchema`). |
|
|
71
74
|
| `invokeTool(name, args)` | Executes a tool and returns `{ content, isError?, structuredContent? }`. |
|
|
72
75
|
|
|
76
|
+
### Tool registry (`@4djs/assistant/core` and `@4djs/assistant/tools`)
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
import {
|
|
80
|
+
connectExternalTools,
|
|
81
|
+
createAssistantToolRegistry,
|
|
82
|
+
} from "@4djs/assistant/tools";
|
|
83
|
+
import { registerDatastoreTools } from "@4djs/assistant/tools";
|
|
84
|
+
|
|
85
|
+
const registry = createAssistantToolRegistry();
|
|
86
|
+
registerDatastoreTools(registry, myDatastoreAdapter);
|
|
87
|
+
|
|
88
|
+
// Extend at runtime
|
|
89
|
+
registry.register({
|
|
90
|
+
definition: { name: "my_tool", description: "…", inputSchema: { type: "object", properties: {} } },
|
|
91
|
+
invoke: async (args) => ({ content: [{ type: "text", text: "ok" }] }),
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
registry.deactivate("my_tool"); // hide from LLM without unregistering
|
|
95
|
+
registry.activate("my_tool");
|
|
96
|
+
|
|
97
|
+
// Bridge @4d/tools or any external registry
|
|
98
|
+
connectExternalTools(registry, externalRegistry);
|
|
99
|
+
|
|
100
|
+
const config: AssistantConfig = {
|
|
101
|
+
toolRegistry: registry,
|
|
102
|
+
// …
|
|
103
|
+
};
|
|
104
|
+
```
|
|
105
|
+
|
|
73
106
|
### Optional store hooks
|
|
74
107
|
|
|
75
108
|
| Option | Description |
|
|
@@ -28,6 +28,7 @@ export interface AssistantState {
|
|
|
28
28
|
submitInteractiveToolResult: (callId: string, result: unknown) => void;
|
|
29
29
|
cancelInteractiveToolResult: (callId: string) => void;
|
|
30
30
|
}
|
|
31
|
+
export declare function resolveAssistantStoreDependencies(deps: AssistantStoreDependencies): Required<Pick<AssistantStoreDependencies, "listTools" | "invokeTool">> & AssistantStoreDependencies;
|
|
31
32
|
export declare function createAssistantStore(deps: AssistantStoreDependencies): import("zustand").UseBoundStore<import("zustand").StoreApi<AssistantState>>;
|
|
32
33
|
export type AssistantStore = ReturnType<typeof createAssistantStore>;
|
|
33
34
|
//# sourceMappingURL=create-assistant-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-assistant-store.d.ts","sourceRoot":"","sources":["../../src/core/create-assistant-store.ts"],"names":[],"mappings":"AAyBA,OAAO,EAML,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAS3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAEV,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,kBAAkB,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxD,eAAe,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,CACf,MAAM,EAAE,qBAAqB,KAC1B,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,uBAAuB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,2BAA2B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACvE,2BAA2B,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AA8HD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,0BAA0B,+
|
|
1
|
+
{"version":3,"file":"create-assistant-store.d.ts","sourceRoot":"","sources":["../../src/core/create-assistant-store.ts"],"names":[],"mappings":"AAyBA,OAAO,EAML,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAS3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAEV,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,kBAAkB,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxD,eAAe,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,CACf,MAAM,EAAE,qBAAqB,KAC1B,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,uBAAuB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,2BAA2B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACvE,2BAA2B,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AA8HD,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,0BAA0B,GAC/B,QAAQ,CACT,IAAI,CAAC,0BAA0B,EAAE,WAAW,GAAG,YAAY,CAAC,CAC7D,GACC,0BAA0B,CAiB3B;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,0BAA0B,+EAubpE;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ export { ASSISTANT_LABEL_KEYS, DEFAULT_ASSISTANT_LABELS, formatLabel, resolveAss
|
|
|
3
3
|
export type { ChatActivityStep } from "./chat-activity.js";
|
|
4
4
|
export { chatActivityStepLabel, formatJsonIfLarge, summarizeActivityResult, } from "./chat-activity.js";
|
|
5
5
|
export type { AssistantCommandDeps, ChatCommandRunResult, ChatCommandSuggestion, ChatCommandSurface, } from "./chat-commands.js";
|
|
6
|
-
export { filterChatCommands, getChatCommandSuggestions, isChatCommandInput, listChatCommands, parseChatCommand, runAssistantChatCommand, shouldShowChatCommandMenu, } from "./chat-commands.js";
|
|
6
|
+
export { completionForChatCommand, filterChatCommands, getChatCommandSuggestions, isChatCommandInput, listChatCommands, parseChatCommand, runAssistantChatCommand, shouldShowChatCommandMenu, } from "./chat-commands.js";
|
|
7
7
|
export { createChatHistoryHelpers } from "./chat-history.js";
|
|
8
|
-
export {
|
|
8
|
+
export { highlightCode, normalizeCodeLineEndings } from "./code-highlight.js";
|
|
9
|
+
export { type AssistantState, type AssistantStore, createAssistantStore, resolveAssistantStoreDependencies, } from "./create-assistant-store.js";
|
|
9
10
|
export { parseSuggestedPromptsResponse, type SuggestedPromptsResponse, } from "./fetch-suggested-prompts.js";
|
|
10
11
|
export { CHOICES_TOOL, type ChoiceOption, type ChoicesToolArgs, CONFIRMATION_TOOL, type ConfirmationToolArgs, type ReplySuggestions, rejectAllInteractiveToolWaiters, resolveInteractiveToolResult, SUGGEST_REPLIES_TOOL, } from "./interactive-tools/index.js";
|
|
11
12
|
export type { AgentStepResult, LlmChatStatus, StreamHandlers, ToolHandlers, } from "./llm-chat.js";
|
|
13
|
+
export { buildSystemPromptWithTools } from "./system-prompt.js";
|
|
12
14
|
export { buildLlmHistory, ChatAbortedError, fetchLlmStatus, LlmNotConfiguredError, LlmUpstreamError, requestLlmCompletion, runLlmAgent, sanitizeLlmMessages, } from "./llm-chat.js";
|
|
13
15
|
export { buildCompletionsUrl, buildLlmRequestHeaders, buildModelsUrl, DEFAULT_LLM_BASE_URL, DEFAULT_LLM_MODEL, getFallbackModels, isLlmConfigured, isLlmUnavailableMessage, isLocalLlmBaseUrl, LLM_UNAVAILABLE_MESSAGE, } from "./llm-config.js";
|
|
14
16
|
export { clearProviderModelCache, fetchProviderModels, } from "./llm-models.js";
|
|
@@ -17,5 +19,9 @@ export type { LlmSettingsFormState, LlmSettingsFormValues, StoredLlmUserSettings
|
|
|
17
19
|
export { assistantToStored, buildDefaultLlmSettings, createDefaultStoredSettings, createLlmSettingsFormState, createLlmSettingsFormStateFromStored, createLlmSettingsStorage, DEFAULT_LLM_SETTINGS_STORAGE_KEY, formatModelsText, isLlmSettingsFormDirty, mergeLlmSettings, migrateLegacyModelStorage, normalizeStoredSettings, normalizeStoredSystemPrompt, parseModelsText, peekStoredModel, persistStoredModelSelection, resolveSelectedModel, storedSettingsHaveOverrides, storedToAssistant, toStoredSettings, } from "./llm-settings-storage.js";
|
|
18
20
|
export type { ClientToolDefinition, LlmChatMessage, OpenAiToolCall, } from "./llm-types.js";
|
|
19
21
|
export { childrenToText } from "./markdown-utils.js";
|
|
22
|
+
export { prepareMarkdown } from "./prepare-markdown.js";
|
|
23
|
+
export { fromLlmToolName, toLlmToolName } from "./tool-names.js";
|
|
24
|
+
export type { AssistantToolHandler, AssistantToolRegistry, ExternalToolSource, } from "./tool-registry.js";
|
|
25
|
+
export { connectExternalTools, createAssistantToolRegistry, resolveAssistantToolHooks, toolResultErr, toolResultOk, } from "./tool-registry.js";
|
|
20
26
|
export type { AssistantLlmConfig, AssistantLlmSettings, AssistantMessage, AssistantStorageKeys, AssistantStoreDependencies, AssistantSuggestedPrompt, AssistantToolContent, AssistantToolDefinition, AssistantToolResult, AssistantWelcomeContext, JsonSchema, } from "./types.js";
|
|
21
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,WAAW,EACX,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,KAAK,cAAc,EACnB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|