photon-grid-core 2.0.1 → 2.0.5
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 +3 -3
- package/cell-selection/cell-selection-engine.d.ts +14 -0
- package/cell-selection/cell-selection-engine.d.ts.map +1 -1
- package/cell-selection/cell-selection-engine.js +63 -9
- package/cell-selection/cell-selection-engine.js.map +1 -1
- package/chart/range-chart-controller.d.ts +10 -0
- package/chart/range-chart-controller.d.ts.map +1 -1
- package/chart/range-chart-controller.js +22 -2
- package/chart/range-chart-controller.js.map +1 -1
- package/column-groups/column-group-drag-handler.d.ts.map +1 -1
- package/column-groups/column-group-drag-handler.js +64 -25
- package/column-groups/column-group-drag-handler.js.map +1 -1
- package/column-groups/column-group-header-builder.d.ts.map +1 -1
- package/column-groups/column-group-header-builder.js +7 -5
- package/column-groups/column-group-header-builder.js.map +1 -1
- package/column-groups/display-group-drag-handler.d.ts +7 -3
- package/column-groups/display-group-drag-handler.d.ts.map +1 -1
- package/column-groups/display-group-drag-handler.js +46 -7
- package/column-groups/display-group-drag-handler.js.map +1 -1
- package/column-groups/display-group-header-builder.d.ts +1 -1
- package/column-groups/display-group-header-builder.d.ts.map +1 -1
- package/column-groups/display-group-header-builder.js +9 -7
- package/column-groups/display-group-header-builder.js.map +1 -1
- package/core/column-model.d.ts +88 -5
- package/core/column-model.d.ts.map +1 -1
- package/core/column-model.js +215 -3
- package/core/column-model.js.map +1 -1
- package/core/grid-api.d.ts +34 -2
- package/core/grid-api.d.ts.map +1 -1
- package/core/grid-api.js +40 -0
- package/core/grid-api.js.map +1 -1
- package/core/grid-core.d.ts +7 -0
- package/core/grid-core.d.ts.map +1 -1
- package/core/grid-core.js +42 -12
- package/core/grid-core.js.map +1 -1
- package/core/grid-store.d.ts +5 -5
- package/core/grid-store.d.ts.map +1 -1
- package/core/pointer-utils.d.ts +59 -0
- package/core/pointer-utils.d.ts.map +1 -0
- package/core/pointer-utils.js +59 -0
- package/core/pointer-utils.js.map +1 -0
- package/drag-drop/drag-drop-engine.d.ts.map +1 -1
- package/drag-drop/drag-drop-engine.js +8 -8
- package/drag-drop/drag-drop-engine.js.map +1 -1
- package/engines/editing/cell-editor-engine.js +1 -1
- package/engines/editing/cell-editor-engine.js.map +1 -1
- package/engines/master-detail/master-detail-engine.d.ts +4 -3
- package/engines/master-detail/master-detail-engine.d.ts.map +1 -1
- package/engines/master-detail/master-detail-engine.js +14 -5
- package/engines/master-detail/master-detail-engine.js.map +1 -1
- package/engines/selection/row-selection-engine.d.ts +41 -0
- package/engines/selection/row-selection-engine.d.ts.map +1 -1
- package/engines/selection/row-selection-engine.js +103 -0
- package/engines/selection/row-selection-engine.js.map +1 -1
- package/index.d.ts +8 -4
- package/index.d.ts.map +1 -1
- package/index.js +4 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/photon-ai/index.d.ts +2 -0
- package/photon-ai/index.d.ts.map +1 -1
- package/photon-ai/index.js +2 -0
- package/photon-ai/index.js.map +1 -1
- package/photon-ai/photon-ai-panel.d.ts +40 -0
- package/photon-ai/photon-ai-panel.d.ts.map +1 -1
- package/photon-ai/photon-ai-panel.js +163 -8
- package/photon-ai/photon-ai-panel.js.map +1 -1
- package/photon-ai/photon-ai-service.d.ts +38 -1
- package/photon-ai/photon-ai-service.d.ts.map +1 -1
- package/photon-ai/photon-ai-service.js +72 -1
- package/photon-ai/photon-ai-service.js.map +1 -1
- package/photon-ai/provider/ai-provider.types.d.ts +174 -0
- package/photon-ai/provider/ai-provider.types.d.ts.map +1 -0
- package/photon-ai/provider/ai-provider.types.js +42 -0
- package/photon-ai/provider/ai-provider.types.js.map +1 -0
- package/photon-ai/provider/command-normalizer.d.ts +36 -0
- package/photon-ai/provider/command-normalizer.d.ts.map +1 -0
- package/photon-ai/provider/command-normalizer.js +120 -0
- package/photon-ai/provider/command-normalizer.js.map +1 -0
- package/photon-ai/provider/grid-context-builder.d.ts +37 -0
- package/photon-ai/provider/grid-context-builder.d.ts.map +1 -0
- package/photon-ai/provider/grid-context-builder.js +96 -0
- package/photon-ai/provider/grid-context-builder.js.map +1 -0
- package/photon-ai/provider/http-ai-provider.d.ts +42 -0
- package/photon-ai/provider/http-ai-provider.d.ts.map +1 -0
- package/photon-ai/provider/http-ai-provider.js +125 -0
- package/photon-ai/provider/http-ai-provider.js.map +1 -0
- package/photon-ai/provider/index.d.ts +30 -0
- package/photon-ai/provider/index.d.ts.map +1 -0
- package/photon-ai/provider/index.js +42 -0
- package/photon-ai/provider/index.js.map +1 -0
- package/photon-ai/provider/presets.d.ts +29 -0
- package/photon-ai/provider/presets.d.ts.map +1 -0
- package/photon-ai/provider/presets.js +110 -0
- package/photon-ai/provider/presets.js.map +1 -0
- package/photon-ai/provider/response-parsing.d.ts +22 -0
- package/photon-ai/provider/response-parsing.d.ts.map +1 -0
- package/photon-ai/provider/response-parsing.js +79 -0
- package/photon-ai/provider/response-parsing.js.map +1 -0
- package/photon-ai/provider/system-prompt.d.ts +26 -0
- package/photon-ai/provider/system-prompt.d.ts.map +1 -0
- package/photon-ai/provider/system-prompt.js +82 -0
- package/photon-ai/provider/system-prompt.js.map +1 -0
- package/photon-grid.min.js +697 -488
- package/renderer/body-renderer.d.ts.map +1 -1
- package/renderer/body-renderer.js +34 -9
- package/renderer/body-renderer.js.map +1 -1
- package/renderer/column-chooser.d.ts +82 -0
- package/renderer/column-chooser.d.ts.map +1 -0
- package/renderer/column-chooser.js +335 -0
- package/renderer/column-chooser.js.map +1 -0
- package/renderer/column-menu.d.ts.map +1 -1
- package/renderer/column-menu.js +32 -20
- package/renderer/column-menu.js.map +1 -1
- package/renderer/column-style-manager.d.ts +17 -0
- package/renderer/column-style-manager.d.ts.map +1 -1
- package/renderer/column-style-manager.js +28 -0
- package/renderer/column-style-manager.js.map +1 -1
- package/renderer/detail-row-renderer.d.ts.map +1 -1
- package/renderer/detail-row-renderer.js +9 -7
- package/renderer/detail-row-renderer.js.map +1 -1
- package/renderer/grid-renderer.d.ts +23 -1
- package/renderer/grid-renderer.d.ts.map +1 -1
- package/renderer/grid-renderer.js +66 -8
- package/renderer/grid-renderer.js.map +1 -1
- package/renderer/group-drop-zone.js +14 -14
- package/renderer/group-drop-zone.js.map +1 -1
- package/renderer/header-renderer.d.ts +70 -0
- package/renderer/header-renderer.d.ts.map +1 -1
- package/renderer/header-renderer.js +361 -52
- package/renderer/header-renderer.js.map +1 -1
- package/renderer/row-animator.d.ts +18 -1
- package/renderer/row-animator.d.ts.map +1 -1
- package/renderer/row-animator.js +96 -20
- package/renderer/row-animator.js.map +1 -1
- package/renderer/row-drag-renderer.js +6 -6
- package/renderer/row-drag-renderer.js.map +1 -1
- package/renderer/scroll-controller.d.ts +40 -0
- package/renderer/scroll-controller.d.ts.map +1 -1
- package/renderer/scroll-controller.js +215 -13
- package/renderer/scroll-controller.js.map +1 -1
- package/styles/base/cells.css.d.ts +1 -1
- package/styles/base/cells.css.d.ts.map +1 -1
- package/styles/base/cells.css.js +13 -13
- package/styles/base/column-chooser.css.d.ts +13 -0
- package/styles/base/column-chooser.css.d.ts.map +1 -0
- package/styles/base/column-chooser.css.js +241 -0
- package/styles/base/column-chooser.css.js.map +1 -0
- package/styles/base/column-context-menu.css.d.ts +1 -1
- package/styles/base/column-context-menu.css.d.ts.map +1 -1
- package/styles/base/column-context-menu.css.js +29 -5
- package/styles/base/column-context-menu.css.js.map +1 -1
- package/styles/base/column-group-header.css.d.ts +1 -1
- package/styles/base/column-group-header.css.d.ts.map +1 -1
- package/styles/base/column-group-header.css.js +1 -1
- package/styles/base/context-menu.css.d.ts +1 -1
- package/styles/base/context-menu.css.d.ts.map +1 -1
- package/styles/base/context-menu.css.js +8 -0
- package/styles/base/context-menu.css.js.map +1 -1
- package/styles/base/filter.css.d.ts +1 -1
- package/styles/base/filter.css.d.ts.map +1 -1
- package/styles/base/filter.css.js +7 -7
- package/styles/base/group-drop-zone.css.d.ts +1 -1
- package/styles/base/group-drop-zone.css.d.ts.map +1 -1
- package/styles/base/group-drop-zone.css.js +3 -3
- package/styles/base/header.css.d.ts +1 -1
- package/styles/base/header.css.d.ts.map +1 -1
- package/styles/base/header.css.js +23 -0
- package/styles/base/header.css.js.map +1 -1
- package/styles/base/photon-ai.css.d.ts +1 -1
- package/styles/base/photon-ai.css.d.ts.map +1 -1
- package/styles/base/photon-ai.css.js +65 -0
- package/styles/base/photon-ai.css.js.map +1 -1
- package/styles/base/row-drag.css.d.ts +1 -1
- package/styles/base/row-drag.css.d.ts.map +1 -1
- package/styles/base/row-drag.css.js +1 -1
- package/styles/base/rows.css.d.ts +1 -1
- package/styles/base/rows.css.d.ts.map +1 -1
- package/styles/base/rows.css.js +4 -16
- package/styles/base/rows.css.js.map +1 -1
- package/styles/base/scrollbars.css.d.ts +1 -1
- package/styles/base/scrollbars.css.d.ts.map +1 -1
- package/styles/base/scrollbars.css.js +56 -7
- package/styles/base/scrollbars.css.js.map +1 -1
- package/styles/base/sparkline.css.d.ts +1 -1
- package/styles/base/sparkline.css.d.ts.map +1 -1
- package/styles/base/sparkline.css.js +6 -0
- package/styles/base/sparkline.css.js.map +1 -1
- package/styles/base/tooltip.css.d.ts +1 -1
- package/styles/base/tooltip.css.d.ts.map +1 -1
- package/styles/base/tooltip.css.js +1 -1
- package/styles/base/touch.css.d.ts +23 -0
- package/styles/base/touch.css.d.ts.map +1 -0
- package/styles/base/touch.css.js +85 -0
- package/styles/base/touch.css.js.map +1 -0
- package/styles/base-styles.d.ts.map +1 -1
- package/styles/base-styles.js +9 -2
- package/styles/base-styles.js.map +1 -1
- package/styles/themes/theme-alpine.d.ts +9 -1
- package/styles/themes/theme-alpine.d.ts.map +1 -1
- package/styles/themes/theme-alpine.js +34 -43
- package/styles/themes/theme-alpine.js.map +1 -1
- package/styles/themes/theme-balham.d.ts +9 -1
- package/styles/themes/theme-balham.d.ts.map +1 -1
- package/styles/themes/theme-balham.js +33 -42
- package/styles/themes/theme-balham.js.map +1 -1
- package/styles/themes/theme-material.d.ts +9 -1
- package/styles/themes/theme-material.d.ts.map +1 -1
- package/styles/themes/theme-material.js +35 -43
- package/styles/themes/theme-material.js.map +1 -1
- package/styles/themes/theme-quartz.d.ts +14 -1
- package/styles/themes/theme-quartz.d.ts.map +1 -1
- package/styles/themes/theme-quartz.js +63 -43
- package/styles/themes/theme-quartz.js.map +1 -1
- package/theme/theme-manager.d.ts +55 -7
- package/theme/theme-manager.d.ts.map +1 -1
- package/theme/theme-manager.js +139 -35
- package/theme/theme-manager.js.map +1 -1
- package/types/column.types.d.ts +78 -0
- package/types/column.types.d.ts.map +1 -1
- package/types/column.types.js +26 -1
- package/types/column.types.js.map +1 -1
- package/types/grid.types.d.ts +92 -3
- package/types/grid.types.d.ts.map +1 -1
- package/types/photon-ai.types.d.ts +125 -5
- package/types/photon-ai.types.d.ts.map +1 -1
- package/types/photon-ai.types.js +18 -1
- package/types/photon-ai.types.js.map +1 -1
- package/types/theme.types.d.ts +19 -0
- package/types/theme.types.d.ts.map +1 -1
- package/types/theme.types.js +7 -1
- package/types/theme.types.js.map +1 -1
- package/styles/themes/theme-dark.d.ts +0 -2
- package/styles/themes/theme-dark.d.ts.map +0 -1
- package/styles/themes/theme-dark.js +0 -216
- package/styles/themes/theme-dark.js.map +0 -1
package/photon-ai/index.js
CHANGED
|
@@ -10,4 +10,6 @@ export { normalizeInput, tokenize, stemWord } from './text-normalizer';
|
|
|
10
10
|
export { splitClauses } from './query-splitter';
|
|
11
11
|
export { PhotonAIMemoryStore, columnSignature } from './photon-ai-memory';
|
|
12
12
|
export { levenshteinDistance, similarity } from './fuzzy-match';
|
|
13
|
+
// ── Generative provider (config-driven HTTP provider + provider-agnostic contracts) ──
|
|
14
|
+
export { createAIProvider, HttpAIProvider, GridContextBuilder, CommandNormalizer, buildSystemInstruction, serializeGridContext, parseGenerationText, coerceGeneration, PhotonAIErrorKind, PhotonAIProviderError, describeProviderError, } from './provider';
|
|
13
15
|
//# sourceMappingURL=index.js.map
|
package/photon-ai/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/photon-ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/photon-ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAShE,wFAAwF;AACxF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
|
@@ -30,15 +30,39 @@ export declare class PhotonAIPanel {
|
|
|
30
30
|
private inputEl;
|
|
31
31
|
private sendBtnEl;
|
|
32
32
|
private submitHandler;
|
|
33
|
+
/** Optional async handler (a configured generative provider). When set, {@link trySubmit} streams the reply instead of rendering it instantly. */
|
|
34
|
+
private asyncSubmitHandler;
|
|
33
35
|
private isOpen;
|
|
34
36
|
private messages;
|
|
37
|
+
/** In-flight generative request, so a second submit / close / destroy can cancel the first. */
|
|
38
|
+
private activeController;
|
|
39
|
+
/** Handle for the running typewriter animation frame, so it can be cancelled on teardown. */
|
|
40
|
+
private typewriterHandle;
|
|
41
|
+
/** True while a request is being processed or its reply streamed — blocks concurrent submits. */
|
|
42
|
+
private isBusy;
|
|
35
43
|
constructor(iconRenderer: IconRenderer);
|
|
36
44
|
/** Mounts the launcher + docked side panel into the grid body. Idempotent-safe: call once per grid instance. */
|
|
37
45
|
mount(bodyWrapEl: HTMLElement, config: PhotonAIConfig): void;
|
|
38
46
|
/** Wires the callback that turns typed text into a result — set once `GridApi`/`PhotonAIService` exist (after `GridCore` construction). */
|
|
39
47
|
setSubmitHandler(fn: (text: string) => PhotonCommandResult): void;
|
|
48
|
+
/**
|
|
49
|
+
* Wires an async handler used when a generative provider (e.g. Gemini) is
|
|
50
|
+
* configured. When present it takes precedence over the synchronous handler:
|
|
51
|
+
* the panel shows a loading indicator while the request is in flight, then
|
|
52
|
+
* streams the reply in with a typewriter effect. The passed `AbortSignal` is
|
|
53
|
+
* aborted if the user submits again, closes, or the grid is destroyed.
|
|
54
|
+
*/
|
|
55
|
+
setAsyncSubmitHandler(fn: (text: string, signal: AbortSignal) => Promise<PhotonCommandResult>): void;
|
|
40
56
|
/** Programmatic equivalent of typing `text` and pressing send — also appends to the conversation log, so a scripted call and a manual one look identical. */
|
|
41
57
|
invoke(text: string): PhotonCommandResult;
|
|
58
|
+
/**
|
|
59
|
+
* Async, streaming counterpart to {@link invoke}, used when an async handler
|
|
60
|
+
* is configured. Appends the user's message, shows a loading bubble while the
|
|
61
|
+
* provider works, then reveals the reply with a typewriter animation that
|
|
62
|
+
* keeps the log scrolled to the latest text. Always resolves — errors are
|
|
63
|
+
* rendered as an error bubble, never thrown.
|
|
64
|
+
*/
|
|
65
|
+
invokeAsync(text: string): Promise<PhotonCommandResult>;
|
|
42
66
|
open(): void;
|
|
43
67
|
close(): void;
|
|
44
68
|
destroy(): void;
|
|
@@ -50,5 +74,21 @@ export declare class PhotonAIPanel {
|
|
|
50
74
|
private trySubmit;
|
|
51
75
|
private appendGreeting;
|
|
52
76
|
private appendMessage;
|
|
77
|
+
/** Creates an empty message bubble for `role`, without inserting it — callers append and fill it. */
|
|
78
|
+
private createBubble;
|
|
79
|
+
/** Renders `text` into `bubble` as one `<div>` per line (so multi-line replies keep their line breaks). */
|
|
80
|
+
private renderLines;
|
|
81
|
+
/** Appends an assistant bubble in its "thinking" state (animated dots) and returns it for later streaming. */
|
|
82
|
+
private appendLoadingBubble;
|
|
83
|
+
/** Turns the loading bubble into the final reply — instantly under reduced-motion, else via a typewriter reveal. */
|
|
84
|
+
private renderStreamingResult;
|
|
85
|
+
/** Reveals `text` character-by-character, auto-scrolling as it grows, and resolves when fully rendered. */
|
|
86
|
+
private typewrite;
|
|
87
|
+
/** Toggles the input/send disabled state while a request is being processed. */
|
|
88
|
+
private setBusy;
|
|
89
|
+
/** Aborts any in-flight request and stops a running typewriter — used on new submit, close, and destroy. */
|
|
90
|
+
private cancelActiveRequest;
|
|
91
|
+
private scrollToBottom;
|
|
92
|
+
private prefersReducedMotion;
|
|
53
93
|
}
|
|
54
94
|
//# sourceMappingURL=photon-ai-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"photon-ai-panel.d.ts","sourceRoot":"","sources":["../../src/photon-ai/photon-ai-panel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"photon-ai-panel.d.ts","sourceRoot":"","sources":["../../src/photon-ai/photon-ai-panel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAgB7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,aAAa;IAoBZ,OAAO,CAAC,YAAY;IAnBhC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,SAAS,CAAkC;IAEnD,OAAO,CAAC,aAAa,CAAwD;IAC7E,kJAAkJ;IAClJ,OAAO,CAAC,kBAAkB,CAAsF;IAChH,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAqB;IAErC,+FAA+F;IAC/F,OAAO,CAAC,gBAAgB,CAAgC;IACxD,6FAA6F;IAC7F,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,iGAAiG;IACjG,OAAO,CAAC,MAAM,CAAS;gBAEH,YAAY,EAAE,YAAY;IAE9C,gHAAgH;IAChH,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAS5D,2IAA2I;IAC3I,gBAAgB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,GAAG,IAAI;IAIjE;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAIpG,6JAA6J;IAC7J,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB;IAOzC;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiC7D,IAAI,IAAI,IAAI;IASZ,KAAK,IAAI,IAAI;IAQb,OAAO,IAAI,IAAI;IAiBf,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,aAAa;IAcrB,qGAAqG;IACrG,OAAO,CAAC,YAAY;IAIpB,2GAA2G;IAC3G,OAAO,CAAC,WAAW;IAYnB,8GAA8G;IAC9G,OAAO,CAAC,mBAAmB;IAa3B,oHAAoH;YACtG,qBAAqB;IAcnC,2GAA2G;IAC3G,OAAO,CAAC,SAAS;IA0BjB,gFAAgF;IAChF,OAAO,CAAC,OAAO;IASf,4GAA4G;IAC5G,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,oBAAoB;CAK7B"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { createDiv, createElement } from '../renderer/dom-utils';
|
|
1
|
+
import { createDiv, createElement, clearChildren } from '../renderer/dom-utils';
|
|
2
2
|
/** Textarea grows with content up to this height (px), then scrolls internally. */
|
|
3
3
|
const INPUT_MAX_HEIGHT_PX = 120;
|
|
4
|
+
/** Typewriter reveal speed for streamed assistant replies, in characters per second. */
|
|
5
|
+
const TYPEWRITER_CHARS_PER_SECOND = 140;
|
|
4
6
|
/**
|
|
5
7
|
* The "Photon AI" panel — a docked sidebar sliding in from the right edge of
|
|
6
8
|
* the grid's own body viewport, where users type natural-language commands
|
|
@@ -31,8 +33,16 @@ export class PhotonAIPanel {
|
|
|
31
33
|
this.inputEl = null;
|
|
32
34
|
this.sendBtnEl = null;
|
|
33
35
|
this.submitHandler = null;
|
|
36
|
+
/** Optional async handler (a configured generative provider). When set, {@link trySubmit} streams the reply instead of rendering it instantly. */
|
|
37
|
+
this.asyncSubmitHandler = null;
|
|
34
38
|
this.isOpen = false;
|
|
35
39
|
this.messages = [];
|
|
40
|
+
/** In-flight generative request, so a second submit / close / destroy can cancel the first. */
|
|
41
|
+
this.activeController = null;
|
|
42
|
+
/** Handle for the running typewriter animation frame, so it can be cancelled on teardown. */
|
|
43
|
+
this.typewriterHandle = null;
|
|
44
|
+
/** True while a request is being processed or its reply streamed — blocks concurrent submits. */
|
|
45
|
+
this.isBusy = false;
|
|
36
46
|
}
|
|
37
47
|
/** Mounts the launcher + docked side panel into the grid body. Idempotent-safe: call once per grid instance. */
|
|
38
48
|
mount(bodyWrapEl, config) {
|
|
@@ -47,6 +57,16 @@ export class PhotonAIPanel {
|
|
|
47
57
|
setSubmitHandler(fn) {
|
|
48
58
|
this.submitHandler = fn;
|
|
49
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Wires an async handler used when a generative provider (e.g. Gemini) is
|
|
62
|
+
* configured. When present it takes precedence over the synchronous handler:
|
|
63
|
+
* the panel shows a loading indicator while the request is in flight, then
|
|
64
|
+
* streams the reply in with a typewriter effect. The passed `AbortSignal` is
|
|
65
|
+
* aborted if the user submits again, closes, or the grid is destroyed.
|
|
66
|
+
*/
|
|
67
|
+
setAsyncSubmitHandler(fn) {
|
|
68
|
+
this.asyncSubmitHandler = fn;
|
|
69
|
+
}
|
|
50
70
|
/** Programmatic equivalent of typing `text` and pressing send — also appends to the conversation log, so a scripted call and a manual one look identical. */
|
|
51
71
|
invoke(text) {
|
|
52
72
|
this.appendMessage({ role: 'user', text });
|
|
@@ -54,6 +74,42 @@ export class PhotonAIPanel {
|
|
|
54
74
|
this.appendMessage({ role: 'assistant', text: result.message, success: result.success });
|
|
55
75
|
return result;
|
|
56
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Async, streaming counterpart to {@link invoke}, used when an async handler
|
|
79
|
+
* is configured. Appends the user's message, shows a loading bubble while the
|
|
80
|
+
* provider works, then reveals the reply with a typewriter animation that
|
|
81
|
+
* keeps the log scrolled to the latest text. Always resolves — errors are
|
|
82
|
+
* rendered as an error bubble, never thrown.
|
|
83
|
+
*/
|
|
84
|
+
async invokeAsync(text) {
|
|
85
|
+
if (!this.asyncSubmitHandler)
|
|
86
|
+
return this.invoke(text);
|
|
87
|
+
// A new request supersedes any in-flight one.
|
|
88
|
+
this.cancelActiveRequest();
|
|
89
|
+
this.setBusy(true);
|
|
90
|
+
this.appendMessage({ role: 'user', text });
|
|
91
|
+
const bubble = this.appendLoadingBubble();
|
|
92
|
+
const controller = new AbortController();
|
|
93
|
+
this.activeController = controller;
|
|
94
|
+
let result;
|
|
95
|
+
try {
|
|
96
|
+
result = await this.asyncSubmitHandler(text, controller.signal);
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
result = { success: false, message: err instanceof Error ? err.message : 'Photon AI request failed.' };
|
|
100
|
+
}
|
|
101
|
+
if (controller.signal.aborted) {
|
|
102
|
+
// Superseded/closed mid-flight — drop the stale loading bubble silently.
|
|
103
|
+
bubble.remove();
|
|
104
|
+
if (this.activeController === controller)
|
|
105
|
+
this.activeController = null;
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
this.activeController = null;
|
|
109
|
+
await this.renderStreamingResult(bubble, result);
|
|
110
|
+
this.setBusy(false);
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
57
113
|
open() {
|
|
58
114
|
if (this.isOpen || !this.panelEl || !this.launcherEl)
|
|
59
115
|
return;
|
|
@@ -68,10 +124,12 @@ export class PhotonAIPanel {
|
|
|
68
124
|
if (!this.isOpen || !this.panelEl || !this.launcherEl)
|
|
69
125
|
return;
|
|
70
126
|
this.isOpen = false;
|
|
127
|
+
this.cancelActiveRequest();
|
|
71
128
|
this.panelEl.classList.remove('pg-ai-panel--open');
|
|
72
129
|
this.launcherEl.classList.remove('pg-ai-launcher--hidden');
|
|
73
130
|
}
|
|
74
131
|
destroy() {
|
|
132
|
+
this.cancelActiveRequest();
|
|
75
133
|
this.launcherEl?.remove();
|
|
76
134
|
this.panelEl?.remove();
|
|
77
135
|
this.launcherEl = null;
|
|
@@ -80,7 +138,9 @@ export class PhotonAIPanel {
|
|
|
80
138
|
this.inputEl = null;
|
|
81
139
|
this.sendBtnEl = null;
|
|
82
140
|
this.submitHandler = null;
|
|
141
|
+
this.asyncSubmitHandler = null;
|
|
83
142
|
this.messages = [];
|
|
143
|
+
this.isBusy = false;
|
|
84
144
|
}
|
|
85
145
|
// ─── Private: construction ─────────────────────────────────────────────
|
|
86
146
|
buildLauncher() {
|
|
@@ -155,13 +215,20 @@ export class PhotonAIPanel {
|
|
|
155
215
|
const sendBtn = this.sendBtnEl;
|
|
156
216
|
if (!input || !sendBtn)
|
|
157
217
|
return;
|
|
218
|
+
if (this.isBusy)
|
|
219
|
+
return;
|
|
158
220
|
const text = input.value.trim();
|
|
159
221
|
if (!text || sendBtn.disabled)
|
|
160
222
|
return;
|
|
161
|
-
this.invoke(text);
|
|
162
223
|
input.value = '';
|
|
163
224
|
sendBtn.disabled = true;
|
|
164
225
|
this.autoGrow(input);
|
|
226
|
+
if (this.asyncSubmitHandler) {
|
|
227
|
+
void this.invokeAsync(text);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this.invoke(text);
|
|
231
|
+
}
|
|
165
232
|
}
|
|
166
233
|
appendGreeting() {
|
|
167
234
|
this.appendMessage({
|
|
@@ -174,18 +241,106 @@ export class PhotonAIPanel {
|
|
|
174
241
|
this.messages.push(message);
|
|
175
242
|
if (!this.logEl)
|
|
176
243
|
return;
|
|
177
|
-
const bubble =
|
|
244
|
+
const bubble = this.createBubble(message.role);
|
|
178
245
|
if (message.role === 'assistant') {
|
|
179
246
|
bubble.classList.toggle('pg-ai-panel__message--error', message.success === false);
|
|
180
247
|
}
|
|
181
|
-
|
|
182
|
-
|
|
248
|
+
this.renderLines(bubble, message.text);
|
|
249
|
+
this.logEl.appendChild(bubble);
|
|
250
|
+
this.scrollToBottom();
|
|
251
|
+
}
|
|
252
|
+
/** Creates an empty message bubble for `role`, without inserting it — callers append and fill it. */
|
|
253
|
+
createBubble(role) {
|
|
254
|
+
return createDiv(`pg-ai-panel__message pg-ai-panel__message--${role}`);
|
|
255
|
+
}
|
|
256
|
+
/** Renders `text` into `bubble` as one `<div>` per line (so multi-line replies keep their line breaks). */
|
|
257
|
+
renderLines(bubble, text) {
|
|
258
|
+
clearChildren(bubble);
|
|
259
|
+
for (const line of text.split('\n')) {
|
|
183
260
|
const lineEl = document.createElement('div');
|
|
184
|
-
|
|
261
|
+
// A zero-width space keeps empty lines from collapsing to zero height.
|
|
262
|
+
lineEl.textContent = line.length > 0 ? line : '';
|
|
185
263
|
bubble.appendChild(lineEl);
|
|
186
264
|
}
|
|
187
|
-
|
|
188
|
-
|
|
265
|
+
}
|
|
266
|
+
// ─── Private: streaming ────────────────────────────────────────────────
|
|
267
|
+
/** Appends an assistant bubble in its "thinking" state (animated dots) and returns it for later streaming. */
|
|
268
|
+
appendLoadingBubble() {
|
|
269
|
+
const bubble = this.createBubble('assistant');
|
|
270
|
+
bubble.classList.add('pg-ai-panel__message--loading');
|
|
271
|
+
const dots = createDiv('pg-ai-panel__typing');
|
|
272
|
+
for (let i = 0; i < 3; i++)
|
|
273
|
+
dots.appendChild(createDiv('pg-ai-panel__typing-dot'));
|
|
274
|
+
bubble.appendChild(dots);
|
|
275
|
+
this.logEl?.appendChild(bubble);
|
|
276
|
+
this.scrollToBottom();
|
|
277
|
+
return bubble;
|
|
278
|
+
}
|
|
279
|
+
/** Turns the loading bubble into the final reply — instantly under reduced-motion, else via a typewriter reveal. */
|
|
280
|
+
async renderStreamingResult(bubble, result) {
|
|
281
|
+
bubble.classList.remove('pg-ai-panel__message--loading');
|
|
282
|
+
bubble.classList.toggle('pg-ai-panel__message--error', result.success === false);
|
|
283
|
+
this.messages.push({ role: 'assistant', text: result.message, success: result.success });
|
|
284
|
+
if (this.prefersReducedMotion()) {
|
|
285
|
+
this.renderLines(bubble, result.message);
|
|
286
|
+
this.scrollToBottom();
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
await this.typewrite(bubble, result.message);
|
|
290
|
+
}
|
|
291
|
+
/** Reveals `text` character-by-character, auto-scrolling as it grows, and resolves when fully rendered. */
|
|
292
|
+
typewrite(bubble, text) {
|
|
293
|
+
return new Promise((resolve) => {
|
|
294
|
+
bubble.classList.add('pg-ai-panel__message--streaming');
|
|
295
|
+
let startTs = null;
|
|
296
|
+
const step = (ts) => {
|
|
297
|
+
if (startTs === null)
|
|
298
|
+
startTs = ts;
|
|
299
|
+
const elapsedSeconds = (ts - startTs) / 1000;
|
|
300
|
+
const revealCount = Math.min(text.length, Math.ceil(elapsedSeconds * TYPEWRITER_CHARS_PER_SECOND));
|
|
301
|
+
this.renderLines(bubble, text.slice(0, revealCount));
|
|
302
|
+
this.scrollToBottom();
|
|
303
|
+
if (revealCount >= text.length) {
|
|
304
|
+
bubble.classList.remove('pg-ai-panel__message--streaming');
|
|
305
|
+
this.typewriterHandle = null;
|
|
306
|
+
resolve();
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
this.typewriterHandle = requestAnimationFrame(step);
|
|
310
|
+
};
|
|
311
|
+
this.typewriterHandle = requestAnimationFrame(step);
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
/** Toggles the input/send disabled state while a request is being processed. */
|
|
315
|
+
setBusy(busy) {
|
|
316
|
+
this.isBusy = busy;
|
|
317
|
+
if (this.inputEl)
|
|
318
|
+
this.inputEl.disabled = busy;
|
|
319
|
+
if (this.sendBtnEl)
|
|
320
|
+
this.sendBtnEl.disabled = busy || this.inputEl?.value.trim().length === 0;
|
|
321
|
+
if (!busy) {
|
|
322
|
+
requestAnimationFrame(() => this.inputEl?.focus());
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/** Aborts any in-flight request and stops a running typewriter — used on new submit, close, and destroy. */
|
|
326
|
+
cancelActiveRequest() {
|
|
327
|
+
this.activeController?.abort();
|
|
328
|
+
this.activeController = null;
|
|
329
|
+
if (this.typewriterHandle !== null) {
|
|
330
|
+
cancelAnimationFrame(this.typewriterHandle);
|
|
331
|
+
this.typewriterHandle = null;
|
|
332
|
+
}
|
|
333
|
+
if (this.isBusy)
|
|
334
|
+
this.setBusy(false);
|
|
335
|
+
}
|
|
336
|
+
scrollToBottom() {
|
|
337
|
+
if (this.logEl)
|
|
338
|
+
this.logEl.scrollTop = this.logEl.scrollHeight;
|
|
339
|
+
}
|
|
340
|
+
prefersReducedMotion() {
|
|
341
|
+
return typeof window !== 'undefined'
|
|
342
|
+
&& typeof window.matchMedia === 'function'
|
|
343
|
+
&& window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
189
344
|
}
|
|
190
345
|
}
|
|
191
346
|
//# sourceMappingURL=photon-ai-panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"photon-ai-panel.js","sourceRoot":"","sources":["../../src/photon-ai/photon-ai-panel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"photon-ai-panel.js","sourceRoot":"","sources":["../../src/photon-ai/photon-ai-panel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { GridApi } from '../core/grid-api';
|
|
2
2
|
import { PhotonAICommandRegistry } from './photon-ai-registry';
|
|
3
|
+
import { type PhotonAIProvider } from './provider/ai-provider.types';
|
|
3
4
|
import type { PhotonCommandResult } from './photon-ai.types';
|
|
4
5
|
/**
|
|
5
6
|
* The only public entry point into Photon AI. Runs the full deterministic
|
|
@@ -36,11 +37,25 @@ export declare class PhotonAIService {
|
|
|
36
37
|
private readonly resolver;
|
|
37
38
|
private readonly builder;
|
|
38
39
|
private readonly executor;
|
|
40
|
+
/**
|
|
41
|
+
* Generative back-end, when one was configured (e.g. Gemini). `null` keeps
|
|
42
|
+
* Photon AI in its default fully-deterministic mode — the two modes share
|
|
43
|
+
* the same registry, executor, and result contract, so nothing else changes.
|
|
44
|
+
*/
|
|
45
|
+
private readonly provider;
|
|
46
|
+
/** Extra domain guidance appended to the base system instruction; only meaningful when {@link provider} is set. */
|
|
47
|
+
private readonly providerSystemInstruction?;
|
|
48
|
+
/** Builds a fresh grid-context snapshot per generative request. Lazily constructed alongside a provider. */
|
|
49
|
+
private readonly contextBuilder;
|
|
50
|
+
/** Reshapes model-generated actions into executable commands. Lazily constructed alongside a provider. */
|
|
51
|
+
private readonly commandNormalizer;
|
|
39
52
|
/**
|
|
40
53
|
* @param api - The grid's own `GridApi` — every command runs through it, never around it.
|
|
41
54
|
* @param registry - Supply a custom registry to fully replace the built-ins, or omit to get sort/filter/pin/visibility/grouping/selection out of the box.
|
|
55
|
+
* @param provider - Optional generative back-end. When supplied, {@link submitAsync} routes prompts through it; when omitted, only the synchronous deterministic pipeline is available.
|
|
56
|
+
* @param providerSystemInstruction - Optional extra guidance appended to the base system instruction sent to {@link provider}.
|
|
42
57
|
*/
|
|
43
|
-
constructor(api: GridApi, registry?: PhotonAICommandRegistry);
|
|
58
|
+
constructor(api: GridApi, registry?: PhotonAICommandRegistry, provider?: PhotonAIProvider | null, providerSystemInstruction?: string);
|
|
44
59
|
/** A registry pre-populated with every built-in intent — the default `PhotonAIService` uses when none is supplied. */
|
|
45
60
|
static createDefaultRegistry(): PhotonAICommandRegistry;
|
|
46
61
|
/** Registers additional custom intents at runtime (e.g. a third-party feature's own `registerAI()`). */
|
|
@@ -54,6 +69,28 @@ export declare class PhotonAIService {
|
|
|
54
69
|
* aggregates their results.
|
|
55
70
|
*/
|
|
56
71
|
submit(rawInput: string): PhotonCommandResult;
|
|
72
|
+
/** `true` when a generative back-end is configured — i.e. {@link submitAsync} will use the model rather than the deterministic pipeline. */
|
|
73
|
+
hasProvider(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Async counterpart to {@link submit}. When a provider is configured, the
|
|
76
|
+
* prompt is interpreted by the model: the grid's current context (columns,
|
|
77
|
+
* capabilities, state) plus the user command are sent to the provider, and
|
|
78
|
+
* every returned action is executed through the *same* `CommandExecutor` the
|
|
79
|
+
* deterministic pipeline uses — so the two backends are interchangeable.
|
|
80
|
+
*
|
|
81
|
+
* With no provider configured, this simply awaits the synchronous
|
|
82
|
+
* deterministic pipeline, so callers can always use the async entry point
|
|
83
|
+
* regardless of mode. Like {@link submit}, it always resolves — provider and
|
|
84
|
+
* execution failures come back as `{ success: false }`, never a rejection.
|
|
85
|
+
*/
|
|
86
|
+
submitAsync(rawInput: string, signal?: AbortSignal): Promise<PhotonCommandResult>;
|
|
87
|
+
/**
|
|
88
|
+
* Runs the model's actions in order and folds them into a single
|
|
89
|
+
* {@link PhotonCommandResult}. The model's natural-language `reply` is the
|
|
90
|
+
* user-facing message; per-command execution failures are appended so a
|
|
91
|
+
* partial success is never silently swallowed.
|
|
92
|
+
*/
|
|
93
|
+
private executeGeneratedActions;
|
|
57
94
|
private runClause;
|
|
58
95
|
private runCommands;
|
|
59
96
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"photon-ai-service.d.ts","sourceRoot":"","sources":["../../src/photon-ai/photon-ai-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAOhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"photon-ai-service.d.ts","sourceRoot":"","sources":["../../src/photon-ai/photon-ai-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAOhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAM/D,OAAO,EAAyB,KAAK,gBAAgB,EAAuB,MAAM,8BAA8B,CAAC;AACjH,OAAO,KAAK,EAAiB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAkB5E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,eAAe;IA4BxB,OAAO,CAAC,GAAG;IA3Bb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,mHAAmH;IACnH,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAS;IACpD,4GAA4G;IAC5G,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,0GAA0G;IAC1G,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAE7D;;;;;OAKG;gBAEO,GAAG,EAAE,OAAO,EACpB,QAAQ,CAAC,EAAE,uBAAuB,EAClC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,EAClC,yBAAyB,CAAC,EAAE,MAAM;IAapC,sHAAsH;IACtH,MAAM,CAAC,qBAAqB,IAAI,uBAAuB;IAMvD,wGAAwG;IACxG,WAAW,IAAI,uBAAuB;IAItC,+IAA+I;IAC/I,mBAAmB,IAAI,IAAI;IAI3B;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAe7C,4IAA4I;IAC5I,WAAW,IAAI,OAAO;IAItB;;;;;;;;;;;OAWG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAuBvF;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAwB/B,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,WAAW;IAUnB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAgBxB,uJAAuJ;IACvJ,OAAO,CAAC,iBAAiB;IAKzB,mNAAmN;IACnN,OAAO,CAAC,WAAW;CASpB"}
|
|
@@ -7,6 +7,10 @@ import { CommandExecutor } from './command-executor';
|
|
|
7
7
|
import { PhotonAICommandRegistry } from './photon-ai-registry';
|
|
8
8
|
import { PhotonAIMemoryStore, columnSignature } from './photon-ai-memory';
|
|
9
9
|
import { registerBuiltinCommands } from './builtins';
|
|
10
|
+
import { GridContextBuilder } from './provider/grid-context-builder';
|
|
11
|
+
import { CommandNormalizer } from './provider/command-normalizer';
|
|
12
|
+
import { buildSystemInstruction } from './provider/system-prompt';
|
|
13
|
+
import { describeProviderError } from './provider/ai-provider.types';
|
|
10
14
|
/**
|
|
11
15
|
* Pure conversational openers — no command content, so `normalizeInput`
|
|
12
16
|
* strips every word away (they're all in its filler list) and the clause
|
|
@@ -49,8 +53,10 @@ export class PhotonAIService {
|
|
|
49
53
|
/**
|
|
50
54
|
* @param api - The grid's own `GridApi` — every command runs through it, never around it.
|
|
51
55
|
* @param registry - Supply a custom registry to fully replace the built-ins, or omit to get sort/filter/pin/visibility/grouping/selection out of the box.
|
|
56
|
+
* @param provider - Optional generative back-end. When supplied, {@link submitAsync} routes prompts through it; when omitted, only the synchronous deterministic pipeline is available.
|
|
57
|
+
* @param providerSystemInstruction - Optional extra guidance appended to the base system instruction sent to {@link provider}.
|
|
52
58
|
*/
|
|
53
|
-
constructor(api, registry) {
|
|
59
|
+
constructor(api, registry, provider, providerSystemInstruction) {
|
|
54
60
|
this.api = api;
|
|
55
61
|
this.parser = new IntentParser();
|
|
56
62
|
this.builder = new CommandBuilder();
|
|
@@ -58,6 +64,10 @@ export class PhotonAIService {
|
|
|
58
64
|
this.executor = new CommandExecutor(this.registry);
|
|
59
65
|
this.memory = new PhotonAIMemoryStore(columnSignature(api.getAllColumns().map((c) => c.colId)));
|
|
60
66
|
this.resolver = new EntityResolver(this.memory);
|
|
67
|
+
this.provider = provider ?? null;
|
|
68
|
+
this.providerSystemInstruction = providerSystemInstruction;
|
|
69
|
+
this.contextBuilder = this.provider ? new GridContextBuilder(this.api, this.registry) : null;
|
|
70
|
+
this.commandNormalizer = this.provider ? new CommandNormalizer(this.api) : null;
|
|
61
71
|
}
|
|
62
72
|
/** A registry pre-populated with every built-in intent — the default `PhotonAIService` uses when none is supplied. */
|
|
63
73
|
static createDefaultRegistry() {
|
|
@@ -92,6 +102,67 @@ export class PhotonAIService {
|
|
|
92
102
|
message: results.map((r, i) => `${i + 1}) ${r.message}`).join(' '),
|
|
93
103
|
};
|
|
94
104
|
}
|
|
105
|
+
/** `true` when a generative back-end is configured — i.e. {@link submitAsync} will use the model rather than the deterministic pipeline. */
|
|
106
|
+
hasProvider() {
|
|
107
|
+
return this.provider !== null;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Async counterpart to {@link submit}. When a provider is configured, the
|
|
111
|
+
* prompt is interpreted by the model: the grid's current context (columns,
|
|
112
|
+
* capabilities, state) plus the user command are sent to the provider, and
|
|
113
|
+
* every returned action is executed through the *same* `CommandExecutor` the
|
|
114
|
+
* deterministic pipeline uses — so the two backends are interchangeable.
|
|
115
|
+
*
|
|
116
|
+
* With no provider configured, this simply awaits the synchronous
|
|
117
|
+
* deterministic pipeline, so callers can always use the async entry point
|
|
118
|
+
* regardless of mode. Like {@link submit}, it always resolves — provider and
|
|
119
|
+
* execution failures come back as `{ success: false }`, never a rejection.
|
|
120
|
+
*/
|
|
121
|
+
async submitAsync(rawInput, signal) {
|
|
122
|
+
const trimmed = rawInput.trim();
|
|
123
|
+
if (!trimmed)
|
|
124
|
+
return { success: false, message: 'Type a command first.' };
|
|
125
|
+
if (!this.provider || !this.contextBuilder || !this.commandNormalizer) {
|
|
126
|
+
return this.submit(trimmed);
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
const gridContext = this.contextBuilder.build();
|
|
130
|
+
const generation = await this.provider.generate({
|
|
131
|
+
systemInstruction: buildSystemInstruction(this.providerSystemInstruction),
|
|
132
|
+
gridContext,
|
|
133
|
+
userCommand: trimmed,
|
|
134
|
+
signal,
|
|
135
|
+
});
|
|
136
|
+
return this.executeGeneratedActions(generation.actions, generation.reply);
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
return { success: false, message: describeProviderError(err) };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Runs the model's actions in order and folds them into a single
|
|
144
|
+
* {@link PhotonCommandResult}. The model's natural-language `reply` is the
|
|
145
|
+
* user-facing message; per-command execution failures are appended so a
|
|
146
|
+
* partial success is never silently swallowed.
|
|
147
|
+
*/
|
|
148
|
+
executeGeneratedActions(actions, reply) {
|
|
149
|
+
const normalizer = this.commandNormalizer;
|
|
150
|
+
const executionMessages = [];
|
|
151
|
+
const failures = [];
|
|
152
|
+
let lastCommand;
|
|
153
|
+
for (const action of actions) {
|
|
154
|
+
const command = normalizer.normalize(action);
|
|
155
|
+
const result = this.executor.execute(command, this.api);
|
|
156
|
+
executionMessages.push(result.message);
|
|
157
|
+
if (result.command)
|
|
158
|
+
lastCommand = result.command;
|
|
159
|
+
if (!result.success)
|
|
160
|
+
failures.push(result.message);
|
|
161
|
+
}
|
|
162
|
+
const message = reply || executionMessages.join(' ') || 'I understood your request but there was nothing to do.';
|
|
163
|
+
const combined = failures.length > 0 ? `${message} (${failures.join(' ')})` : message;
|
|
164
|
+
return { success: failures.length === 0, message: combined, command: lastCommand };
|
|
165
|
+
}
|
|
95
166
|
runClause(clause) {
|
|
96
167
|
const normalized = normalizeInput(clause);
|
|
97
168
|
if (!normalized)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"photon-ai-service.js","sourceRoot":"","sources":["../../src/photon-ai/photon-ai-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"photon-ai-service.js","sourceRoot":"","sources":["../../src/photon-ai/photon-ai-service.ts"],"names":[],"mappings":"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"}
|