@powerhousedao/reactor-browser 6.2.2-dev.84 → 6.2.2-dev.86
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/dist/{document-model-modules-DMIR-uSD.js → document-model-modules-DfQBNGc-.js} +11 -3
- package/dist/{document-model-modules-DMIR-uSD.js.map → document-model-modules-DfQBNGc-.js.map} +1 -1
- package/dist/{document-operations-Bo1dPDgq.js → document-operations-CBExT76y.js} +2 -2
- package/dist/{document-operations-Bo1dPDgq.js.map → document-operations-CBExT76y.js.map} +1 -1
- package/dist/index.d.ts +26 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -10
- package/dist/index.js.map +1 -1
- package/dist/src/ai/index.d.ts +3 -1
- package/dist/src/ai/index.d.ts.map +1 -1
- package/dist/src/ai/index.js +3 -232
- package/dist/src/ai/index.js.map +1 -1
- package/dist/src/graphql-client/entry.js +2 -2
- package/dist/switchboard-D4-_jwk-.js +271 -0
- package/dist/switchboard-D4-_jwk-.js.map +1 -0
- package/package.json +9 -9
- package/dist/selected-document-xFBNPc9Q.js +0 -42
- package/dist/selected-document-xFBNPc9Q.js.map +0 -1
package/dist/src/ai/index.d.ts
CHANGED
|
@@ -313,6 +313,8 @@ interface DriveSwitchboard {
|
|
|
313
313
|
* module is initialized.
|
|
314
314
|
*/
|
|
315
315
|
declare function getBrowserSyncManager(): ISyncManager | undefined;
|
|
316
|
+
/** Suffix of the per-drive GraphQL channel endpoint the switchboard serves. */
|
|
317
|
+
declare const GQL_CHANNEL_SUFFIX = "/graphql/r";
|
|
316
318
|
/**
|
|
317
319
|
* Resolves the switchboard that serves a drive, if any.
|
|
318
320
|
*
|
|
@@ -365,5 +367,5 @@ interface SwitchboardToolDeps {
|
|
|
365
367
|
*/
|
|
366
368
|
declare function createSwitchboardSchemaTool(deps?: SwitchboardToolDeps): AiToolDescriptor;
|
|
367
369
|
//#endregion
|
|
368
|
-
export { AgentEvent, AiSettings, AiToolAnnotations, AiToolDescriptor, AiToolsProvider, ApprovalCard, ChatContext, ChatMessage, ChatPart, ChatWindow, DEFAULT_AI_SETTINGS, DriveSwitchboard, FULL_RESULT_TURNS, MAX_AGENT_STEPS, MAX_TOOL_RESULT_CHARS, PendingApproval, ReactorChatAgent, ReactorChatAgentOptions, ReactorChatFab, STUB_MIN_CHARS, SWITCHBOARD_INTROSPECTION_QUERY, SWITCHBOARD_SCHEMA_TOOL_NAME, SchemaFieldSummary, SwitchboardToolDeps, ToolCallState, UseReactorChatResult, WRITE_TOOLS, buildSystemPrompt, clearAiSettings, createReactorChatModel, createSwitchboardSchemaTool, getAiSettings, getBrowserSyncManager, isAiConfigured, isWriteTool, resolveDriveSwitchboard, stubStaleToolResults, subscribeAiSettings, summarizeIntrospectionSchema, unwrapToolResult, updateAiSettings, useChatContext, useReactorChat };
|
|
370
|
+
export { AgentEvent, AiSettings, AiToolAnnotations, AiToolDescriptor, AiToolsProvider, ApprovalCard, ChatContext, ChatMessage, ChatPart, ChatWindow, DEFAULT_AI_SETTINGS, DriveSwitchboard, FULL_RESULT_TURNS, GQL_CHANNEL_SUFFIX, MAX_AGENT_STEPS, MAX_TOOL_RESULT_CHARS, PendingApproval, ReactorChatAgent, ReactorChatAgentOptions, ReactorChatFab, STUB_MIN_CHARS, SWITCHBOARD_INTROSPECTION_QUERY, SWITCHBOARD_SCHEMA_TOOL_NAME, SchemaFieldSummary, SwitchboardToolDeps, ToolCallState, UseReactorChatResult, WRITE_TOOLS, buildSystemPrompt, clearAiSettings, createReactorChatModel, createSwitchboardSchemaTool, getAiSettings, getBrowserSyncManager, isAiConfigured, isWriteTool, resolveDriveSwitchboard, stubStaleToolResults, subscribeAiSettings, summarizeIntrospectionSchema, unwrapToolResult, updateAiSettings, useChatContext, useReactorChat };
|
|
369
371
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/ai/types.ts","../../../src/ai/agent.ts","../../../src/ai/components/approval-card.tsx","../../../src/ai/use-reactor-chat.ts","../../../src/ai/components/chat-window.tsx","../../../src/ai/components/reactor-chat-fab.tsx","../../../src/ai/context.ts","../../../src/ai/settings-store.ts","../../../src/ai/switchboard.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/ai/types.ts","../../../src/ai/agent.ts","../../../src/ai/components/approval-card.tsx","../../../src/ai/use-reactor-chat.ts","../../../src/ai/components/chat-window.tsx","../../../src/ai/components/reactor-chat-fab.tsx","../../../src/ai/context.ts","../../../src/ai/settings-store.ts","../../../src/ai/switchboard.ts"],"mappings":"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"}
|
package/dist/src/ai/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { S as useSelectedDriveSafe, s as useSelectedNode } from "../../document-model-modules-DfQBNGc-.js";
|
|
2
|
+
import { a as getBrowserSyncManager, i as createSwitchboardSchemaTool, l as useSelectedDocumentId, n as SWITCHBOARD_INTROSPECTION_QUERY, o as resolveDriveSwitchboard, r as SWITCHBOARD_SCHEMA_TOOL_NAME, s as summarizeIntrospectionSchema, t as GQL_CHANNEL_SUFFIX } from "../../switchboard-D4-_jwk-.js";
|
|
3
3
|
import { isFileNode, isFolderNode } from "@powerhousedao/shared/document-drive";
|
|
4
4
|
import { useCallback, useEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
5
|
-
import { DriveCollectionId } from "@powerhousedao/reactor";
|
|
6
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
6
|
import { z } from "zod";
|
|
8
7
|
import { isStepCount, streamText, tool } from "ai";
|
|
@@ -810,234 +809,6 @@ function isAiConfigured(settings) {
|
|
|
810
809
|
return settings.baseUrl.trim().length > 0 && settings.apiKey.trim().length > 0 && settings.model.trim().length > 0;
|
|
811
810
|
}
|
|
812
811
|
//#endregion
|
|
813
|
-
//#region src/ai/switchboard.ts
|
|
814
|
-
/**
|
|
815
|
-
* Reads the tab-side sync manager from the browser global. Returns
|
|
816
|
-
* `undefined` in non-browser environments or before the reactor client
|
|
817
|
-
* module is initialized.
|
|
818
|
-
*/
|
|
819
|
-
function getBrowserSyncManager() {
|
|
820
|
-
if (typeof window === "undefined") return;
|
|
821
|
-
return window.ph?.reactorClientModule?.reactorModule?.syncModule?.syncManager;
|
|
822
|
-
}
|
|
823
|
-
/** Suffix of the per-drive GraphQL channel endpoint the switchboard serves. */
|
|
824
|
-
const GQL_CHANNEL_SUFFIX = "/graphql/r";
|
|
825
|
-
/**
|
|
826
|
-
* Resolves the switchboard that serves a drive, if any.
|
|
827
|
-
*
|
|
828
|
-
* Every remote drive stores its switchboard's exact GraphQL channel
|
|
829
|
-
* endpoint in its sync remote — `channelConfig = { type: "gql",
|
|
830
|
-
* parameters: { url: "<origin>/graphql/r" } }` — and the switchboard base
|
|
831
|
-
* is that URL minus the `/graphql/r` suffix. Deriving it per drive (rather
|
|
832
|
-
* than from a global setting) is what keeps multi-switchboard deployments
|
|
833
|
-
* correct. Drives that are not synced to a remote switchboard (local
|
|
834
|
-
* drives, other channel types, unexpected shapes) return `undefined`.
|
|
835
|
-
*/
|
|
836
|
-
function resolveDriveSwitchboard(driveId, syncManager) {
|
|
837
|
-
const manager = syncManager ?? getBrowserSyncManager();
|
|
838
|
-
if (!driveId || !manager) return;
|
|
839
|
-
const collectionId = DriveCollectionId.forDrive(driveId);
|
|
840
|
-
const remote = manager.list().find((r) => r.meta.collectionId.equals(collectionId));
|
|
841
|
-
if (!remote) return;
|
|
842
|
-
const { channelConfig } = remote.meta;
|
|
843
|
-
if (channelConfig.type !== "gql") return;
|
|
844
|
-
const url = channelConfig.parameters.url;
|
|
845
|
-
if (typeof url !== "string" || !url.endsWith(GQL_CHANNEL_SUFFIX)) return;
|
|
846
|
-
const switchboardUrl = url.slice(0, -10);
|
|
847
|
-
return {
|
|
848
|
-
switchboardUrl,
|
|
849
|
-
graphqlUrl: `${switchboardUrl}/graphql`
|
|
850
|
-
};
|
|
851
|
-
}
|
|
852
|
-
/**
|
|
853
|
-
* Introspection over the switchboard supergraph's root query and mutation
|
|
854
|
-
* fields. Types are requested with three levels of `ofType` nesting so
|
|
855
|
-
* that common shapes like `[X!]!` (LIST(NON_NULL(LIST(X)))) render fully.
|
|
856
|
-
*/
|
|
857
|
-
const SWITCHBOARD_INTROSPECTION_QUERY = `
|
|
858
|
-
query SwitchboardIntrospection {
|
|
859
|
-
__schema {
|
|
860
|
-
queryType {
|
|
861
|
-
fields {
|
|
862
|
-
name
|
|
863
|
-
description
|
|
864
|
-
args {
|
|
865
|
-
name
|
|
866
|
-
type {
|
|
867
|
-
kind
|
|
868
|
-
name
|
|
869
|
-
ofType {
|
|
870
|
-
kind
|
|
871
|
-
name
|
|
872
|
-
ofType {
|
|
873
|
-
kind
|
|
874
|
-
name
|
|
875
|
-
ofType {
|
|
876
|
-
kind
|
|
877
|
-
name
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
}
|
|
882
|
-
}
|
|
883
|
-
type {
|
|
884
|
-
kind
|
|
885
|
-
name
|
|
886
|
-
ofType {
|
|
887
|
-
kind
|
|
888
|
-
name
|
|
889
|
-
ofType {
|
|
890
|
-
kind
|
|
891
|
-
name
|
|
892
|
-
ofType {
|
|
893
|
-
kind
|
|
894
|
-
name
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
}
|
|
899
|
-
}
|
|
900
|
-
}
|
|
901
|
-
mutationType {
|
|
902
|
-
fields {
|
|
903
|
-
name
|
|
904
|
-
description
|
|
905
|
-
args {
|
|
906
|
-
name
|
|
907
|
-
type {
|
|
908
|
-
kind
|
|
909
|
-
name
|
|
910
|
-
ofType {
|
|
911
|
-
kind
|
|
912
|
-
name
|
|
913
|
-
ofType {
|
|
914
|
-
kind
|
|
915
|
-
name
|
|
916
|
-
ofType {
|
|
917
|
-
kind
|
|
918
|
-
name
|
|
919
|
-
}
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
|
-
}
|
|
923
|
-
}
|
|
924
|
-
type {
|
|
925
|
-
kind
|
|
926
|
-
name
|
|
927
|
-
ofType {
|
|
928
|
-
kind
|
|
929
|
-
name
|
|
930
|
-
ofType {
|
|
931
|
-
kind
|
|
932
|
-
name
|
|
933
|
-
ofType {
|
|
934
|
-
kind
|
|
935
|
-
name
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
}
|
|
939
|
-
}
|
|
940
|
-
}
|
|
941
|
-
}
|
|
942
|
-
}
|
|
943
|
-
}
|
|
944
|
-
`;
|
|
945
|
-
/**
|
|
946
|
-
* Renders an introspected type reference as a GraphQL type string.
|
|
947
|
-
* Recursion is bounded by the `ofType` nesting of the query, so it always
|
|
948
|
-
* terminates.
|
|
949
|
-
*/
|
|
950
|
-
function renderTypeRef(type) {
|
|
951
|
-
if (!type) return "Unknown";
|
|
952
|
-
switch (type.kind) {
|
|
953
|
-
case "NON_NULL": return `${renderTypeRef(type.ofType)}!`;
|
|
954
|
-
case "LIST": return `[${renderTypeRef(type.ofType)}]`;
|
|
955
|
-
default: return type.name ?? "Unknown";
|
|
956
|
-
}
|
|
957
|
-
}
|
|
958
|
-
/** Cap on the number of fields reported per root type. */
|
|
959
|
-
const MAX_FIELDS_PER_ROOT = 200;
|
|
960
|
-
function summarizeFields(fields) {
|
|
961
|
-
const list = fields ?? [];
|
|
962
|
-
return {
|
|
963
|
-
fields: list.slice(0, MAX_FIELDS_PER_ROOT).map((field) => ({
|
|
964
|
-
name: field.name,
|
|
965
|
-
...field.description ? { description: field.description } : {},
|
|
966
|
-
args: field.args.map((arg) => `${arg.name}: ${renderTypeRef(arg.type)}`).join(", "),
|
|
967
|
-
returns: renderTypeRef(field.type)
|
|
968
|
-
})),
|
|
969
|
-
truncated: list.length > MAX_FIELDS_PER_ROOT
|
|
970
|
-
};
|
|
971
|
-
}
|
|
972
|
-
/**
|
|
973
|
-
* Reduces a GraphQL `__schema` introspection payload (the `data.__schema`
|
|
974
|
-
* object) to a compact summary of its root query and mutation fields.
|
|
975
|
-
* Accepts `unknown` because the payload arrives over the wire.
|
|
976
|
-
*/
|
|
977
|
-
function summarizeIntrospectionSchema(schema) {
|
|
978
|
-
const introspection = schema ?? {};
|
|
979
|
-
const queries = summarizeFields(introspection.queryType?.fields);
|
|
980
|
-
const mutations = summarizeFields(introspection.mutationType?.fields);
|
|
981
|
-
return {
|
|
982
|
-
queries: queries.fields,
|
|
983
|
-
mutations: mutations.fields,
|
|
984
|
-
truncated: queries.truncated || mutations.truncated
|
|
985
|
-
};
|
|
986
|
-
}
|
|
987
|
-
const SWITCHBOARD_SCHEMA_TOOL_NAME = "getSwitchboardSchema";
|
|
988
|
-
/**
|
|
989
|
-
* Creates the read-only `getSwitchboardSchema` tool: it introspects the
|
|
990
|
-
* GraphQL supergraph of the switchboard serving a drive and returns a
|
|
991
|
-
* summary of its root queries and mutations. It reads the schema only and
|
|
992
|
-
* never modifies data.
|
|
993
|
-
*/
|
|
994
|
-
function createSwitchboardSchemaTool(deps) {
|
|
995
|
-
const getSyncManager = deps?.getSyncManager ?? getBrowserSyncManager;
|
|
996
|
-
const getSelectedDriveId = deps?.getSelectedDriveId ?? (() => typeof window === "undefined" ? void 0 : window.ph?.selectedDriveId);
|
|
997
|
-
const tokenProvider = deps?.tokenProvider ?? ambientRenownTokenProvider;
|
|
998
|
-
const fetchImpl = deps?.fetchImpl ?? fetch;
|
|
999
|
-
const timeoutMs = deps?.timeoutMs ?? 1e4;
|
|
1000
|
-
return {
|
|
1001
|
-
name: SWITCHBOARD_SCHEMA_TOOL_NAME,
|
|
1002
|
-
description: "Introspect the GraphQL endpoint of the switchboard serving a drive and list the queries and mutations it exposes (reactor operations, document-model read models, package subgraphs). Read-only: it reads the schema only and never modifies data. Omit driveId to introspect the currently selected drive.",
|
|
1003
|
-
inputSchema: { driveId: z.string().describe("Drive to introspect. Omit to use the currently selected drive.").optional() },
|
|
1004
|
-
annotations: { readOnlyHint: true },
|
|
1005
|
-
callback: async (input) => {
|
|
1006
|
-
const driveId = input?.driveId ?? getSelectedDriveId();
|
|
1007
|
-
const sb = resolveDriveSwitchboard(driveId, getSyncManager());
|
|
1008
|
-
if (!sb) throw new Error(driveId ? `Drive "${driveId}" has no switchboard: it is not synced to a remote switchboard.` : "No drive is currently selected and no driveId was given.");
|
|
1009
|
-
const token = await tokenProvider();
|
|
1010
|
-
let response;
|
|
1011
|
-
try {
|
|
1012
|
-
response = await fetchImpl(sb.graphqlUrl, {
|
|
1013
|
-
method: "POST",
|
|
1014
|
-
headers: {
|
|
1015
|
-
"content-type": "application/json",
|
|
1016
|
-
...token ? { authorization: `Bearer ${token}` } : {}
|
|
1017
|
-
},
|
|
1018
|
-
body: JSON.stringify({ query: SWITCHBOARD_INTROSPECTION_QUERY }),
|
|
1019
|
-
signal: AbortSignal.timeout(timeoutMs)
|
|
1020
|
-
});
|
|
1021
|
-
} catch (error) {
|
|
1022
|
-
throw new Error(`Switchboard at ${sb.graphqlUrl} is not reachable: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
1023
|
-
}
|
|
1024
|
-
if (response.status === 401 || response.status === 403) throw new Error(`Switchboard at ${sb.graphqlUrl} refused the request (HTTP ${response.status}). Sign in to the switchboard (Renown) and try again.`);
|
|
1025
|
-
if (!response.ok) throw new Error(`Switchboard introspection failed: HTTP ${response.status} ${response.statusText} from ${sb.graphqlUrl}`);
|
|
1026
|
-
const body = await response.json();
|
|
1027
|
-
const schemaErrors = body?.errors;
|
|
1028
|
-
if (schemaErrors && schemaErrors.length > 0) throw new Error(schemaErrors.map((e) => e.message ?? "unknown error").join("; "));
|
|
1029
|
-
const schema = body?.data?.__schema;
|
|
1030
|
-
if (!schema?.queryType) throw new Error(`Switchboard at ${sb.graphqlUrl} did not return a GraphQL schema.`);
|
|
1031
|
-
const summary = summarizeIntrospectionSchema(schema);
|
|
1032
|
-
return {
|
|
1033
|
-
switchboardUrl: sb.switchboardUrl,
|
|
1034
|
-
graphqlUrl: sb.graphqlUrl,
|
|
1035
|
-
...summary
|
|
1036
|
-
};
|
|
1037
|
-
}
|
|
1038
|
-
};
|
|
1039
|
-
}
|
|
1040
|
-
//#endregion
|
|
1041
812
|
//#region src/ai/context.ts
|
|
1042
813
|
/**
|
|
1043
814
|
* Snapshot of the current selection in the drive explorer, used to make the
|
|
@@ -1291,6 +1062,6 @@ function ReactorChatFab({ getTools }) {
|
|
|
1291
1062
|
})] });
|
|
1292
1063
|
}
|
|
1293
1064
|
//#endregion
|
|
1294
|
-
export { ApprovalCard, ChatWindow, DEFAULT_AI_SETTINGS, FULL_RESULT_TURNS, MAX_AGENT_STEPS, MAX_TOOL_RESULT_CHARS, ReactorChatAgent, ReactorChatFab, STUB_MIN_CHARS, SWITCHBOARD_INTROSPECTION_QUERY, SWITCHBOARD_SCHEMA_TOOL_NAME, WRITE_TOOLS, buildSystemPrompt, clearAiSettings, createReactorChatModel, createSwitchboardSchemaTool, getAiSettings, getBrowserSyncManager, isAiConfigured, isWriteTool, resolveDriveSwitchboard, stubStaleToolResults, subscribeAiSettings, summarizeIntrospectionSchema, unwrapToolResult, updateAiSettings, useChatContext, useReactorChat };
|
|
1065
|
+
export { ApprovalCard, ChatWindow, DEFAULT_AI_SETTINGS, FULL_RESULT_TURNS, GQL_CHANNEL_SUFFIX, MAX_AGENT_STEPS, MAX_TOOL_RESULT_CHARS, ReactorChatAgent, ReactorChatFab, STUB_MIN_CHARS, SWITCHBOARD_INTROSPECTION_QUERY, SWITCHBOARD_SCHEMA_TOOL_NAME, WRITE_TOOLS, buildSystemPrompt, clearAiSettings, createReactorChatModel, createSwitchboardSchemaTool, getAiSettings, getBrowserSyncManager, isAiConfigured, isWriteTool, resolveDriveSwitchboard, stubStaleToolResults, subscribeAiSettings, summarizeIntrospectionSchema, unwrapToolResult, updateAiSettings, useChatContext, useReactorChat };
|
|
1295
1066
|
|
|
1296
1067
|
//# sourceMappingURL=index.js.map
|