@noodleseed/one 0.20.0 → 0.21.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.
Files changed (111) hide show
  1. package/dist/agents.d.ts +12 -0
  2. package/dist/agents.d.ts.map +1 -1
  3. package/dist/agents.js +36 -3
  4. package/dist/agents.js.map +1 -1
  5. package/dist/commands/analytics-ops.d.ts.map +1 -1
  6. package/dist/commands/analytics-ops.js +5 -3
  7. package/dist/commands/analytics-ops.js.map +1 -1
  8. package/dist/commands/author-loop.d.ts.map +1 -1
  9. package/dist/commands/author-loop.js +58 -21
  10. package/dist/commands/author-loop.js.map +1 -1
  11. package/dist/commands/catalog-data-core.d.ts.map +1 -1
  12. package/dist/commands/catalog-data-core.js +15 -3
  13. package/dist/commands/catalog-data-core.js.map +1 -1
  14. package/dist/commands/deploy-ops.d.ts +6 -0
  15. package/dist/commands/deploy-ops.d.ts.map +1 -1
  16. package/dist/commands/deploy-ops.js +108 -38
  17. package/dist/commands/deploy-ops.js.map +1 -1
  18. package/dist/commands/mcp-apps.d.ts.map +1 -1
  19. package/dist/commands/mcp-apps.js +31 -7
  20. package/dist/commands/mcp-apps.js.map +1 -1
  21. package/dist/commands/output.d.ts +52 -0
  22. package/dist/commands/output.d.ts.map +1 -1
  23. package/dist/commands/output.js +12 -0
  24. package/dist/commands/output.js.map +1 -1
  25. package/dist/commands/project-setup.d.ts.map +1 -1
  26. package/dist/commands/project-setup.js +35 -4
  27. package/dist/commands/project-setup.js.map +1 -1
  28. package/dist/commands/update-ops.d.ts.map +1 -1
  29. package/dist/commands/update-ops.js +11 -1
  30. package/dist/commands/update-ops.js.map +1 -1
  31. package/dist/first-run.d.ts.map +1 -1
  32. package/dist/first-run.js +57 -29
  33. package/dist/first-run.js.map +1 -1
  34. package/dist/project.js +17 -1
  35. package/dist/project.js.map +1 -1
  36. package/dist/react.d.ts +2 -2
  37. package/dist/react.d.ts.map +1 -1
  38. package/dist/react.js +1 -1
  39. package/dist/react.js.map +1 -1
  40. package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.d.ts.map +1 -1
  41. package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js +3 -1
  42. package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js.map +1 -1
  43. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts +1 -1
  44. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  45. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +3 -1
  46. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  47. package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts.map +1 -1
  48. package/node_modules/@noodle-borg/agent-kit/dist/index.js +17 -11
  49. package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
  50. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.d.ts.map +1 -1
  51. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +225 -26
  52. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  53. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts +1 -0
  54. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
  55. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +217 -52
  56. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
  57. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
  58. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +20 -0
  59. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  60. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  61. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +2 -2
  62. package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
  63. package/node_modules/@noodle-borg/authoring/dist/index.js +1 -1
  64. package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
  65. package/node_modules/@noodle-borg/authoring/dist/react/app-flow.d.ts +33 -0
  66. package/node_modules/@noodle-borg/authoring/dist/react/app-flow.d.ts.map +1 -0
  67. package/node_modules/@noodle-borg/authoring/dist/react/app-flow.js +93 -0
  68. package/node_modules/@noodle-borg/authoring/dist/react/app-flow.js.map +1 -0
  69. package/node_modules/@noodle-borg/authoring/dist/react/bridge.d.ts +33 -0
  70. package/node_modules/@noodle-borg/authoring/dist/react/bridge.d.ts.map +1 -0
  71. package/node_modules/@noodle-borg/authoring/dist/react/bridge.js +75 -0
  72. package/node_modules/@noodle-borg/authoring/dist/react/bridge.js.map +1 -0
  73. package/node_modules/@noodle-borg/authoring/dist/react/components.d.ts +5165 -0
  74. package/node_modules/@noodle-borg/authoring/dist/react/components.d.ts.map +1 -0
  75. package/node_modules/@noodle-borg/authoring/dist/react/components.js +129 -0
  76. package/node_modules/@noodle-borg/authoring/dist/react/components.js.map +1 -0
  77. package/node_modules/@noodle-borg/authoring/dist/react/handoff.d.ts +12 -0
  78. package/node_modules/@noodle-borg/authoring/dist/react/handoff.d.ts.map +1 -0
  79. package/node_modules/@noodle-borg/authoring/dist/react/handoff.js +54 -0
  80. package/node_modules/@noodle-borg/authoring/dist/react/handoff.js.map +1 -0
  81. package/node_modules/@noodle-borg/authoring/dist/react/hooks.d.ts +45 -0
  82. package/node_modules/@noodle-borg/authoring/dist/react/hooks.d.ts.map +1 -0
  83. package/node_modules/@noodle-borg/authoring/dist/react/hooks.js +114 -0
  84. package/node_modules/@noodle-borg/authoring/dist/react/hooks.js.map +1 -0
  85. package/node_modules/@noodle-borg/authoring/dist/react/index.d.ts +11 -0
  86. package/node_modules/@noodle-borg/authoring/dist/react/index.d.ts.map +1 -0
  87. package/node_modules/@noodle-borg/authoring/dist/react/index.js +6 -0
  88. package/node_modules/@noodle-borg/authoring/dist/react/index.js.map +1 -0
  89. package/node_modules/@noodle-borg/authoring/dist/react/store.d.ts +9 -0
  90. package/node_modules/@noodle-borg/authoring/dist/react/store.d.ts.map +1 -0
  91. package/node_modules/@noodle-borg/authoring/dist/react/store.js +25 -0
  92. package/node_modules/@noodle-borg/authoring/dist/react/store.js.map +1 -0
  93. package/node_modules/@noodle-borg/authoring/dist/react.d.ts +2 -28
  94. package/node_modules/@noodle-borg/authoring/dist/react.d.ts.map +1 -1
  95. package/node_modules/@noodle-borg/authoring/dist/react.js +1 -152
  96. package/node_modules/@noodle-borg/authoring/dist/react.js.map +1 -1
  97. package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts.map +1 -1
  98. package/node_modules/@noodle-borg/connector-defs/dist/compile.js +23 -8
  99. package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -1
  100. package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +8 -4
  101. package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts.map +1 -1
  102. package/node_modules/@noodle-borg/connector-defs/dist/schema.js +3 -3
  103. package/node_modules/@noodle-borg/connector-defs/dist/schema.js.map +1 -1
  104. package/node_modules/@noodle-borg/connector-defs/dist/variables.d.ts +1 -0
  105. package/node_modules/@noodle-borg/connector-defs/dist/variables.d.ts.map +1 -1
  106. package/node_modules/@noodle-borg/connector-defs/dist/variables.js +1 -1
  107. package/node_modules/@noodle-borg/connector-defs/dist/variables.js.map +1 -1
  108. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +3 -2
  109. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -1
  110. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -1
  111. package/package.json +2 -2
@@ -0,0 +1,93 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { useViewState } from './hooks.js';
3
+ export function useAppFlow(config) {
4
+ const stateKey = config.key ?? 'app_flow';
5
+ const [state, setState] = useViewState(stateKey, {
6
+ activeView: config.initialView,
7
+ paramsByView: {},
8
+ viewStack: [],
9
+ overlayStack: [],
10
+ refreshToken: 0,
11
+ });
12
+ const assertView = useCallback((view) => {
13
+ if (config.views !== undefined && !config.views.includes(view)) {
14
+ throw new Error(`Unknown app view "${view}"`);
15
+ }
16
+ }, [config.views]);
17
+ const navigate = useCallback((view, params = {}) => {
18
+ assertView(view);
19
+ setState((current) => ({
20
+ ...current,
21
+ activeView: view,
22
+ paramsByView: { ...current.paramsByView, [view]: params },
23
+ viewStack: current.activeView === view
24
+ ? current.viewStack
25
+ : [...current.viewStack, current.activeView],
26
+ }));
27
+ }, [assertView, setState]);
28
+ const replace = useCallback((view, params = {}) => {
29
+ assertView(view);
30
+ setState((current) => ({
31
+ ...current,
32
+ activeView: view,
33
+ paramsByView: { ...current.paramsByView, [view]: params },
34
+ }));
35
+ }, [assertView, setState]);
36
+ const back = useCallback(() => {
37
+ setState((current) => {
38
+ if (current.overlayStack.length > 0) {
39
+ return { ...current, overlayStack: current.overlayStack.slice(0, -1) };
40
+ }
41
+ const next = current.viewStack.at(-1);
42
+ if (next === undefined)
43
+ return current;
44
+ return {
45
+ ...current,
46
+ activeView: next,
47
+ viewStack: current.viewStack.slice(0, -1),
48
+ };
49
+ });
50
+ }, [setState]);
51
+ const reset = useCallback((view = config.initialView, params = {}) => {
52
+ assertView(view);
53
+ setState({
54
+ activeView: view,
55
+ paramsByView: { [view]: params },
56
+ viewStack: [],
57
+ overlayStack: [],
58
+ refreshToken: 0,
59
+ });
60
+ }, [assertView, config.initialView, setState]);
61
+ const refresh = useCallback(() => {
62
+ setState((current) => ({ ...current, refreshToken: current.refreshToken + 1 }));
63
+ }, [setState]);
64
+ const openOverlay = useCallback((view, options = {}) => {
65
+ assertView(view);
66
+ setState((current) => ({
67
+ ...current,
68
+ overlayStack: [
69
+ ...current.overlayStack,
70
+ { view, mode: options.mode ?? 'modal', params: options.params ?? {} },
71
+ ],
72
+ }));
73
+ }, [assertView, setState]);
74
+ const closeOverlay = useCallback(() => {
75
+ setState((current) => ({ ...current, overlayStack: current.overlayStack.slice(0, -1) }));
76
+ }, [setState]);
77
+ return useMemo(() => ({
78
+ activeView: state.activeView,
79
+ params: state.paramsByView[state.activeView] ?? {},
80
+ viewStack: state.viewStack,
81
+ overlayStack: state.overlayStack,
82
+ refreshToken: state.refreshToken,
83
+ canGoBack: state.viewStack.length > 0 || state.overlayStack.length > 0,
84
+ navigate,
85
+ replace,
86
+ back,
87
+ reset,
88
+ refresh,
89
+ openOverlay,
90
+ closeOverlay,
91
+ }), [back, closeOverlay, navigate, openOverlay, refresh, replace, reset, state]);
92
+ }
93
+ //# sourceMappingURL=app-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-flow.js","sourceRoot":"","sources":["../../src/react/app-flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export type ToolResult = {
2
+ readonly content?: unknown;
3
+ readonly structuredContent?: unknown;
4
+ readonly _meta?: unknown;
5
+ readonly isError?: boolean;
6
+ };
7
+ export type LayoutState = {
8
+ readonly theme: 'light' | 'dark';
9
+ readonly displayMode: 'inline' | 'fullscreen';
10
+ readonly locale?: string;
11
+ };
12
+ export interface NoodleReactBridge {
13
+ readonly getToolResult?: (toolName?: string) => ToolResult | undefined;
14
+ readonly getViewState?: () => Record<string, unknown>;
15
+ readonly setWidgetState?: (patch: Record<string, unknown>) => void;
16
+ readonly getLayout?: () => LayoutState;
17
+ readonly callServerTool?: (request: {
18
+ readonly name: string;
19
+ readonly arguments?: unknown;
20
+ }) => Promise<ToolResult>;
21
+ readonly openExternal?: (url: string) => Promise<void>;
22
+ readonly sendFollowUpMessage?: (message: {
23
+ readonly prompt: string;
24
+ }) => Promise<void>;
25
+ }
26
+ export declare function useBridgeVersion(): number;
27
+ export declare function bridge(): NoodleReactBridge | undefined;
28
+ export declare function requireBridge(): NoodleReactBridge;
29
+ export declare function globalToolResult(): ToolResult;
30
+ export declare function globalViewState(): Record<string, unknown>;
31
+ export declare function setGlobalViewState(value: Record<string, unknown>): void;
32
+ export declare function globalLayout(): LayoutState;
33
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/react/bridge.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;IACvE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,WAAW,CAAC;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE;QAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;KAC9B,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxF;AAiBD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,MAAM,IAAI,iBAAiB,GAAG,SAAS,CAEtD;AAED,wBAAgB,aAAa,IAAI,iBAAiB,CAIjD;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAG7C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGvE;AAED,wBAAgB,YAAY,IAAI,WAAW,CAO1C"}
@@ -0,0 +1,75 @@
1
+ import { useSyncExternalStore } from 'react';
2
+ const EVENTS = [
3
+ 'noodle:data',
4
+ 'noodle:state',
5
+ 'noodle:input',
6
+ 'noodle:layout',
7
+ 'noodle:bridge',
8
+ ];
9
+ export function useBridgeVersion() {
10
+ return useSyncExternalStore(subscribe, snapshot, () => 0);
11
+ }
12
+ export function bridge() {
13
+ return globalThis.__noodleReactBridge;
14
+ }
15
+ export function requireBridge() {
16
+ const current = bridge();
17
+ if (current === undefined)
18
+ throw new Error('Noodle widget bridge is not connected yet');
19
+ return current;
20
+ }
21
+ export function globalToolResult() {
22
+ const structuredContent = globalThis.__noodleData;
23
+ return structuredContent === undefined ? {} : { structuredContent };
24
+ }
25
+ export function globalViewState() {
26
+ const value = globalThis.__noodleState;
27
+ return value !== null && typeof value === 'object'
28
+ ? { ...value }
29
+ : {};
30
+ }
31
+ export function setGlobalViewState(value) {
32
+ globalThis.__noodleState = value;
33
+ bumpBridgeVersion('noodle:state');
34
+ }
35
+ export function globalLayout() {
36
+ const value = globalThis.__noodleLayout ?? {};
37
+ return {
38
+ theme: value.theme === 'dark' ? 'dark' : 'light',
39
+ displayMode: value.displayMode === 'fullscreen' ? 'fullscreen' : 'inline',
40
+ ...(value.locale !== undefined ? { locale: value.locale } : {}),
41
+ };
42
+ }
43
+ function subscribe(onChange) {
44
+ const target = eventfulGlobal();
45
+ if (typeof target.addEventListener !== 'function')
46
+ return () => undefined;
47
+ for (const event of EVENTS)
48
+ target.addEventListener(event, onChange);
49
+ return () => {
50
+ if (typeof target.removeEventListener !== 'function')
51
+ return;
52
+ for (const event of EVENTS)
53
+ target.removeEventListener(event, onChange);
54
+ };
55
+ }
56
+ function snapshot() {
57
+ return Number(globalThis.__noodleReactVersion ?? 0);
58
+ }
59
+ function bumpBridgeVersion(eventName) {
60
+ const target = globalThis;
61
+ target.__noodleReactVersion = (target.__noodleReactVersion ?? 0) + 1;
62
+ const events = eventfulGlobal();
63
+ try {
64
+ if (typeof events.dispatchEvent === 'function' && events.CustomEvent) {
65
+ events.dispatchEvent(new events.CustomEvent(eventName));
66
+ }
67
+ }
68
+ catch {
69
+ // Non-browser test runtimes may not provide CustomEvent.
70
+ }
71
+ }
72
+ function eventfulGlobal() {
73
+ return globalThis;
74
+ }
75
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/react/bridge.ts"],"names":[],"mappings":"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"}