pi-ui-extend 0.1.1
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 +307 -0
- package/bin/pix.mjs +219 -0
- package/dist/app/app.d.ts +96 -0
- package/dist/app/app.js +871 -0
- package/dist/app/blink-controller.d.ts +23 -0
- package/dist/app/blink-controller.js +82 -0
- package/dist/app/cli.d.ts +8 -0
- package/dist/app/cli.js +83 -0
- package/dist/app/clipboard.d.ts +1 -0
- package/dist/app/clipboard.js +24 -0
- package/dist/app/command-controller.d.ts +18 -0
- package/dist/app/command-controller.js +58 -0
- package/dist/app/command-host.d.ts +44 -0
- package/dist/app/command-host.js +1 -0
- package/dist/app/command-model-actions.d.ts +12 -0
- package/dist/app/command-model-actions.js +176 -0
- package/dist/app/command-navigation-actions.d.ts +19 -0
- package/dist/app/command-navigation-actions.js +267 -0
- package/dist/app/command-registry.d.ts +32 -0
- package/dist/app/command-registry.js +225 -0
- package/dist/app/command-runtime.d.ts +5 -0
- package/dist/app/command-runtime.js +32 -0
- package/dist/app/command-session-actions.d.ts +20 -0
- package/dist/app/command-session-actions.js +295 -0
- package/dist/app/constants.d.ts +52 -0
- package/dist/app/constants.js +103 -0
- package/dist/app/conversation-entry-renderer.d.ts +21 -0
- package/dist/app/conversation-entry-renderer.js +81 -0
- package/dist/app/conversation-shell-renderer.d.ts +5 -0
- package/dist/app/conversation-shell-renderer.js +43 -0
- package/dist/app/conversation-tool-renderer.d.ts +16 -0
- package/dist/app/conversation-tool-renderer.js +216 -0
- package/dist/app/conversation-viewport.d.ts +55 -0
- package/dist/app/conversation-viewport.js +252 -0
- package/dist/app/dcp-stats.d.ts +2 -0
- package/dist/app/dcp-stats.js +116 -0
- package/dist/app/editor-layout-renderer.d.ts +31 -0
- package/dist/app/editor-layout-renderer.js +211 -0
- package/dist/app/editor-panels.d.ts +4 -0
- package/dist/app/editor-panels.js +130 -0
- package/dist/app/extension-actions-controller.d.ts +22 -0
- package/dist/app/extension-actions-controller.js +60 -0
- package/dist/app/extension-event-bus.d.ts +3 -0
- package/dist/app/extension-event-bus.js +23 -0
- package/dist/app/extension-ui-controller.d.ts +57 -0
- package/dist/app/extension-ui-controller.js +532 -0
- package/dist/app/file-link-opener.d.ts +2 -0
- package/dist/app/file-link-opener.js +66 -0
- package/dist/app/file-links.d.ts +10 -0
- package/dist/app/file-links.js +117 -0
- package/dist/app/guards.d.ts +3 -0
- package/dist/app/guards.js +9 -0
- package/dist/app/icons.d.ts +37 -0
- package/dist/app/icons.js +97 -0
- package/dist/app/id.d.ts +1 -0
- package/dist/app/id.js +4 -0
- package/dist/app/image-click-targets.d.ts +5 -0
- package/dist/app/image-click-targets.js +32 -0
- package/dist/app/image-opener.d.ts +2 -0
- package/dist/app/image-opener.js +64 -0
- package/dist/app/input-action-controller.d.ts +47 -0
- package/dist/app/input-action-controller.js +209 -0
- package/dist/app/input-controller.d.ts +60 -0
- package/dist/app/input-controller.js +425 -0
- package/dist/app/input-paste-handler.d.ts +27 -0
- package/dist/app/input-paste-handler.js +146 -0
- package/dist/app/menu-items-controller.d.ts +32 -0
- package/dist/app/menu-items-controller.js +182 -0
- package/dist/app/message-content.d.ts +8 -0
- package/dist/app/message-content.js +115 -0
- package/dist/app/model-ref.d.ts +13 -0
- package/dist/app/model-ref.js +50 -0
- package/dist/app/model-usage-controller.d.ts +35 -0
- package/dist/app/model-usage-controller.js +99 -0
- package/dist/app/model-usage-status.d.ts +125 -0
- package/dist/app/model-usage-status.js +749 -0
- package/dist/app/mouse-controller.d.ts +182 -0
- package/dist/app/mouse-controller.js +968 -0
- package/dist/app/native-modifiers.d.ts +3 -0
- package/dist/app/native-modifiers.js +60 -0
- package/dist/app/nerd-font-controller.d.ts +11 -0
- package/dist/app/nerd-font-controller.js +90 -0
- package/dist/app/popup-action-controller.d.ts +44 -0
- package/dist/app/popup-action-controller.js +278 -0
- package/dist/app/popup-menu-controller.d.ts +183 -0
- package/dist/app/popup-menu-controller.js +1070 -0
- package/dist/app/prompt-enhancer-controller.d.ts +40 -0
- package/dist/app/prompt-enhancer-controller.js +215 -0
- package/dist/app/queued-message-controller.d.ts +62 -0
- package/dist/app/queued-message-controller.js +377 -0
- package/dist/app/render-controller.d.ts +41 -0
- package/dist/app/render-controller.js +378 -0
- package/dist/app/render-text.d.ts +19 -0
- package/dist/app/render-text.js +67 -0
- package/dist/app/request-history.d.ts +23 -0
- package/dist/app/request-history.js +131 -0
- package/dist/app/runtime.d.ts +39 -0
- package/dist/app/runtime.js +195 -0
- package/dist/app/screen-selection.d.ts +6 -0
- package/dist/app/screen-selection.js +9 -0
- package/dist/app/screen-styler.d.ts +34 -0
- package/dist/app/screen-styler.js +168 -0
- package/dist/app/scroll-controller.d.ts +51 -0
- package/dist/app/scroll-controller.js +207 -0
- package/dist/app/session-event-controller.d.ts +69 -0
- package/dist/app/session-event-controller.js +338 -0
- package/dist/app/session-history.d.ts +23 -0
- package/dist/app/session-history.js +164 -0
- package/dist/app/session-lifecycle-controller.d.ts +55 -0
- package/dist/app/session-lifecycle-controller.js +116 -0
- package/dist/app/session-search.d.ts +24 -0
- package/dist/app/session-search.js +215 -0
- package/dist/app/shell-command.d.ts +27 -0
- package/dist/app/shell-command.js +176 -0
- package/dist/app/shell-controller.d.ts +28 -0
- package/dist/app/shell-controller.js +124 -0
- package/dist/app/slash-commands.d.ts +6 -0
- package/dist/app/slash-commands.js +75 -0
- package/dist/app/startup-checks.d.ts +8 -0
- package/dist/app/startup-checks.js +59 -0
- package/dist/app/startup-info.d.ts +3 -0
- package/dist/app/startup-info.js +176 -0
- package/dist/app/status-controller.d.ts +35 -0
- package/dist/app/status-controller.js +105 -0
- package/dist/app/status-line-renderer.d.ts +68 -0
- package/dist/app/status-line-renderer.js +453 -0
- package/dist/app/subagents-files.d.ts +10 -0
- package/dist/app/subagents-files.js +193 -0
- package/dist/app/subagents-model.d.ts +23 -0
- package/dist/app/subagents-model.js +224 -0
- package/dist/app/subagents-widget-controller.d.ts +43 -0
- package/dist/app/subagents-widget-controller.js +311 -0
- package/dist/app/tab-line-renderer.d.ts +26 -0
- package/dist/app/tab-line-renderer.js +222 -0
- package/dist/app/tabs-controller.d.ts +100 -0
- package/dist/app/tabs-controller.js +885 -0
- package/dist/app/terminal-controller.d.ts +40 -0
- package/dist/app/terminal-controller.js +135 -0
- package/dist/app/terminal-edit-shortcuts.d.ts +23 -0
- package/dist/app/terminal-edit-shortcuts.js +138 -0
- package/dist/app/terminal-output-buffer.d.ts +20 -0
- package/dist/app/terminal-output-buffer.js +52 -0
- package/dist/app/toast-controller.d.ts +13 -0
- package/dist/app/toast-controller.js +40 -0
- package/dist/app/toast-renderer.d.ts +9 -0
- package/dist/app/toast-renderer.js +79 -0
- package/dist/app/todo-model.d.ts +22 -0
- package/dist/app/todo-model.js +179 -0
- package/dist/app/todo-widget-controller.d.ts +21 -0
- package/dist/app/todo-widget-controller.js +59 -0
- package/dist/app/tool-block-renderer.d.ts +26 -0
- package/dist/app/tool-block-renderer.js +439 -0
- package/dist/app/types.d.ts +550 -0
- package/dist/app/types.js +1 -0
- package/dist/app/update.d.ts +36 -0
- package/dist/app/update.js +315 -0
- package/dist/app/voice-controller.d.ts +52 -0
- package/dist/app/voice-controller.js +600 -0
- package/dist/app/workspace-actions-controller.d.ts +40 -0
- package/dist/app/workspace-actions-controller.js +215 -0
- package/dist/app/workspace-undo.d.ts +44 -0
- package/dist/app/workspace-undo.js +215 -0
- package/dist/config.d.ts +62 -0
- package/dist/config.js +527 -0
- package/dist/context-progress-bar.d.ts +17 -0
- package/dist/context-progress-bar.js +48 -0
- package/dist/default-pix-config.d.ts +1 -0
- package/dist/default-pix-config.js +375 -0
- package/dist/fuzzy.d.ts +23 -0
- package/dist/fuzzy.js +165 -0
- package/dist/input-editor-files.d.ts +15 -0
- package/dist/input-editor-files.js +62 -0
- package/dist/input-editor.d.ts +186 -0
- package/dist/input-editor.js +835 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +12 -0
- package/dist/markdown-format.d.ts +22 -0
- package/dist/markdown-format.js +542 -0
- package/dist/sdk.d.ts +3 -0
- package/dist/sdk.js +1 -0
- package/dist/syntax-highlight.d.ts +22 -0
- package/dist/syntax-highlight.js +528 -0
- package/dist/terminal-width.d.ts +6 -0
- package/dist/terminal-width.js +245 -0
- package/dist/theme.d.ts +56 -0
- package/dist/theme.js +118 -0
- package/dist/tool-renderers/apply-patch.d.ts +2 -0
- package/dist/tool-renderers/apply-patch.js +36 -0
- package/dist/tool-renderers/ast.d.ts +2 -0
- package/dist/tool-renderers/ast.js +5 -0
- package/dist/tool-renderers/compress.d.ts +2 -0
- package/dist/tool-renderers/compress.js +126 -0
- package/dist/tool-renderers/index.d.ts +3 -0
- package/dist/tool-renderers/index.js +44 -0
- package/dist/tool-renderers/question.d.ts +2 -0
- package/dist/tool-renderers/question.js +88 -0
- package/dist/tool-renderers/read.d.ts +2 -0
- package/dist/tool-renderers/read.js +36 -0
- package/dist/tool-renderers/repo.d.ts +2 -0
- package/dist/tool-renderers/repo.js +13 -0
- package/dist/tool-renderers/shell.d.ts +3 -0
- package/dist/tool-renderers/shell.js +27 -0
- package/dist/tool-renderers/skill.d.ts +2 -0
- package/dist/tool-renderers/skill.js +132 -0
- package/dist/tool-renderers/subagents.d.ts +2 -0
- package/dist/tool-renderers/subagents.js +51 -0
- package/dist/tool-renderers/todo.d.ts +2 -0
- package/dist/tool-renderers/todo.js +9 -0
- package/dist/tool-renderers/types.d.ts +42 -0
- package/dist/tool-renderers/types.js +1 -0
- package/dist/tool-renderers/utils.d.ts +31 -0
- package/dist/tool-renderers/utils.js +230 -0
- package/dist/tool-renderers/web.d.ts +3 -0
- package/dist/tool-renderers/web.js +9 -0
- package/dist/tool-renderers/write.d.ts +2 -0
- package/dist/tool-renderers/write.js +42 -0
- package/dist/ui.d.ts +56 -0
- package/dist/ui.js +94 -0
- package/docs/release.md +81 -0
- package/extensions/question/contract.ts +100 -0
- package/extensions/question/index.ts +34 -0
- package/extensions/question/render.ts +28 -0
- package/extensions/question/result.ts +86 -0
- package/extensions/question/tool-description.ts +11 -0
- package/extensions/question/tui.ts +629 -0
- package/extensions/question/types.ts +123 -0
- package/extensions/session-title/config.ts +169 -0
- package/extensions/session-title/index.ts +459 -0
- package/extensions/terminal-bell/index.ts +315 -0
- package/external/pi-tools-suite/README.md +242 -0
- package/external/pi-tools-suite/index.ts +1 -0
- package/external/pi-tools-suite/licenses/ollama-pi-web-search.MIT +21 -0
- package/external/pi-tools-suite/licenses/opencode-mystatus-MIT.txt +21 -0
- package/external/pi-tools-suite/package.json +53 -0
- package/external/pi-tools-suite/src/antigravity-auth/auth-store.ts +194 -0
- package/external/pi-tools-suite/src/antigravity-auth/commands.ts +80 -0
- package/external/pi-tools-suite/src/antigravity-auth/constants.ts +26 -0
- package/external/pi-tools-suite/src/antigravity-auth/headers.ts +20 -0
- package/external/pi-tools-suite/src/antigravity-auth/index.ts +104 -0
- package/external/pi-tools-suite/src/antigravity-auth/models.ts +86 -0
- package/external/pi-tools-suite/src/antigravity-auth/oauth.ts +305 -0
- package/external/pi-tools-suite/src/antigravity-auth/payload.ts +423 -0
- package/external/pi-tools-suite/src/antigravity-auth/status.ts +78 -0
- package/external/pi-tools-suite/src/antigravity-auth/stream.ts +302 -0
- package/external/pi-tools-suite/src/antigravity-auth/types.ts +113 -0
- package/external/pi-tools-suite/src/ast-grep/index.ts +6 -0
- package/external/pi-tools-suite/src/ast-grep/render.ts +70 -0
- package/external/pi-tools-suite/src/ast-grep/schema.ts +109 -0
- package/external/pi-tools-suite/src/ast-grep/tool.ts +345 -0
- package/external/pi-tools-suite/src/ast-grep/types.ts +55 -0
- package/external/pi-tools-suite/src/ast-grep/utils.ts +65 -0
- package/external/pi-tools-suite/src/async-subagents/async-subagents.sample.jsonc +222 -0
- package/external/pi-tools-suite/src/async-subagents/commands.ts +518 -0
- package/external/pi-tools-suite/src/async-subagents/constants.ts +11 -0
- package/external/pi-tools-suite/src/async-subagents/core/agent-strategy.ts +74 -0
- package/external/pi-tools-suite/src/async-subagents/core/attachment-bridge.ts +133 -0
- package/external/pi-tools-suite/src/async-subagents/core/cleanup.ts +66 -0
- package/external/pi-tools-suite/src/async-subagents/core/concurrency.ts +90 -0
- package/external/pi-tools-suite/src/async-subagents/core/config.ts +819 -0
- package/external/pi-tools-suite/src/async-subagents/core/log-limits.ts +166 -0
- package/external/pi-tools-suite/src/async-subagents/core/model-fallback.ts +133 -0
- package/external/pi-tools-suite/src/async-subagents/core/paths.ts +47 -0
- package/external/pi-tools-suite/src/async-subagents/core/pi-invocation.ts +35 -0
- package/external/pi-tools-suite/src/async-subagents/core/presets.ts +67 -0
- package/external/pi-tools-suite/src/async-subagents/core/process.ts +15 -0
- package/external/pi-tools-suite/src/async-subagents/core/prompt.ts +66 -0
- package/external/pi-tools-suite/src/async-subagents/core/registry.ts +224 -0
- package/external/pi-tools-suite/src/async-subagents/core/retry.ts +191 -0
- package/external/pi-tools-suite/src/async-subagents/core/routing.ts +259 -0
- package/external/pi-tools-suite/src/async-subagents/core/sessions.ts +138 -0
- package/external/pi-tools-suite/src/async-subagents/core/spawn.ts +688 -0
- package/external/pi-tools-suite/src/async-subagents/core/state.ts +281 -0
- package/external/pi-tools-suite/src/async-subagents/core/stop.ts +131 -0
- package/external/pi-tools-suite/src/async-subagents/core/structured-result.ts +237 -0
- package/external/pi-tools-suite/src/async-subagents/core/tool-guard.ts +34 -0
- package/external/pi-tools-suite/src/async-subagents/core/types.ts +150 -0
- package/external/pi-tools-suite/src/async-subagents/core/ultrawork-auto.ts +184 -0
- package/external/pi-tools-suite/src/async-subagents/core/utils.ts +11 -0
- package/external/pi-tools-suite/src/async-subagents/format.ts +41 -0
- package/external/pi-tools-suite/src/async-subagents/index.ts +422 -0
- package/external/pi-tools-suite/src/async-subagents/lib.ts +88 -0
- package/external/pi-tools-suite/src/async-subagents/live.ts +10 -0
- package/external/pi-tools-suite/src/async-subagents/polling.ts +83 -0
- package/external/pi-tools-suite/src/async-subagents/render.ts +230 -0
- package/external/pi-tools-suite/src/async-subagents/subagent-overlay.ts +77 -0
- package/external/pi-tools-suite/src/async-subagents/tasks.ts +120 -0
- package/external/pi-tools-suite/src/async-subagents/tools/cleanup.ts +99 -0
- package/external/pi-tools-suite/src/async-subagents/tools/result.ts +179 -0
- package/external/pi-tools-suite/src/async-subagents/tools/spawn.ts +372 -0
- package/external/pi-tools-suite/src/async-subagents/tools/status.ts +60 -0
- package/external/pi-tools-suite/src/async-subagents/tools/stop.ts +79 -0
- package/external/pi-tools-suite/src/async-subagents/tools/subagents.ts +152 -0
- package/external/pi-tools-suite/src/async-subagents/tools/wait.ts +67 -0
- package/external/pi-tools-suite/src/async-subagents/types.ts +45 -0
- package/external/pi-tools-suite/src/async-subagents/ui.ts +5 -0
- package/external/pi-tools-suite/src/compress/commands.ts +440 -0
- package/external/pi-tools-suite/src/compress/compress-tool.ts +368 -0
- package/external/pi-tools-suite/src/compress/compression-blocks.ts +524 -0
- package/external/pi-tools-suite/src/compress/config.ts +310 -0
- package/external/pi-tools-suite/src/compress/dcp-tui-filter.ts +498 -0
- package/external/pi-tools-suite/src/compress/index.ts +397 -0
- package/external/pi-tools-suite/src/compress/prompts.ts +269 -0
- package/external/pi-tools-suite/src/compress/pruner-candidates.ts +176 -0
- package/external/pi-tools-suite/src/compress/pruner-compression-blocks.ts +260 -0
- package/external/pi-tools-suite/src/compress/pruner-message-ids.ts +147 -0
- package/external/pi-tools-suite/src/compress/pruner-metadata.ts +268 -0
- package/external/pi-tools-suite/src/compress/pruner-nudge.ts +315 -0
- package/external/pi-tools-suite/src/compress/pruner-tools.ts +263 -0
- package/external/pi-tools-suite/src/compress/pruner-types.ts +25 -0
- package/external/pi-tools-suite/src/compress/pruner.ts +92 -0
- package/external/pi-tools-suite/src/compress/state.ts +486 -0
- package/external/pi-tools-suite/src/compress/ui.ts +308 -0
- package/external/pi-tools-suite/src/config.ts +176 -0
- package/external/pi-tools-suite/src/context-usage.ts +31 -0
- package/external/pi-tools-suite/src/default-pi-tools-suite-config.ts +355 -0
- package/external/pi-tools-suite/src/index.ts +46 -0
- package/external/pi-tools-suite/src/lib/lsp.ts +62 -0
- package/external/pi-tools-suite/src/lib/project.ts +42 -0
- package/external/pi-tools-suite/src/lib/tool-args.ts +137 -0
- package/external/pi-tools-suite/src/lsp/_shared/config.ts +156 -0
- package/external/pi-tools-suite/src/lsp/_shared/glob.ts +60 -0
- package/external/pi-tools-suite/src/lsp/_shared/output.ts +102 -0
- package/external/pi-tools-suite/src/lsp/_shared/paths.ts +138 -0
- package/external/pi-tools-suite/src/lsp/_shared/runner.ts +64 -0
- package/external/pi-tools-suite/src/lsp/_shared/template.ts +23 -0
- package/external/pi-tools-suite/src/lsp/_shared/trust.ts +116 -0
- package/external/pi-tools-suite/src/lsp/_shared/types.ts +98 -0
- package/external/pi-tools-suite/src/lsp/async.ts +29 -0
- package/external/pi-tools-suite/src/lsp/child-process.ts +81 -0
- package/external/pi-tools-suite/src/lsp/client.ts +340 -0
- package/external/pi-tools-suite/src/lsp/constants.ts +9 -0
- package/external/pi-tools-suite/src/lsp/diagnostics-store.ts +64 -0
- package/external/pi-tools-suite/src/lsp/documents.ts +24 -0
- package/external/pi-tools-suite/src/lsp/index.ts +31 -0
- package/external/pi-tools-suite/src/lsp/lsp-utils.ts +37 -0
- package/external/pi-tools-suite/src/lsp/manager.ts +190 -0
- package/external/pi-tools-suite/src/lsp/mutation-events.ts +78 -0
- package/external/pi-tools-suite/src/lsp/renderer.ts +1 -0
- package/external/pi-tools-suite/src/lsp/tool-result.ts +6 -0
- package/external/pi-tools-suite/src/lsp/tsserver.ts +107 -0
- package/external/pi-tools-suite/src/lsp/types.ts +15 -0
- package/external/pi-tools-suite/src/model-tools/apply-patch.ts +590 -0
- package/external/pi-tools-suite/src/model-tools/index.ts +430 -0
- package/external/pi-tools-suite/src/model-tools/path-utils.ts +6 -0
- package/external/pi-tools-suite/src/model-tools/tool-args.ts +11 -0
- package/external/pi-tools-suite/src/prompt-commands/index.ts +349 -0
- package/external/pi-tools-suite/src/repo-discovery/index.ts +384 -0
- package/external/pi-tools-suite/src/repo-discovery/project.ts +7 -0
- package/external/pi-tools-suite/src/startup-section.ts +13 -0
- package/external/pi-tools-suite/src/terminal-bell/index.ts +309 -0
- package/external/pi-tools-suite/src/todo/index.ts +201 -0
- package/external/pi-tools-suite/src/todo/state/auto-clear.ts +13 -0
- package/external/pi-tools-suite/src/todo/state/invariants.ts +21 -0
- package/external/pi-tools-suite/src/todo/state/persistence.ts +94 -0
- package/external/pi-tools-suite/src/todo/state/replay.ts +38 -0
- package/external/pi-tools-suite/src/todo/state/selectors.ts +49 -0
- package/external/pi-tools-suite/src/todo/state/state-reducer.ts +362 -0
- package/external/pi-tools-suite/src/todo/state/state.ts +18 -0
- package/external/pi-tools-suite/src/todo/state/store.ts +52 -0
- package/external/pi-tools-suite/src/todo/state/task-graph.ts +57 -0
- package/external/pi-tools-suite/src/todo/todo.ts +487 -0
- package/external/pi-tools-suite/src/todo/tool/response-envelope.ts +143 -0
- package/external/pi-tools-suite/src/todo/tool/types.ts +188 -0
- package/external/pi-tools-suite/src/todo/view/format.ts +18 -0
- package/external/pi-tools-suite/src/todo/view/labels.ts +13 -0
- package/external/pi-tools-suite/src/tool-descriptions.ts +369 -0
- package/external/pi-tools-suite/src/usage/index.ts +152 -0
- package/external/pi-tools-suite/src/usage/lib/copilot.ts +535 -0
- package/external/pi-tools-suite/src/usage/lib/google.ts +478 -0
- package/external/pi-tools-suite/src/usage/lib/openai.ts +268 -0
- package/external/pi-tools-suite/src/usage/lib/types.ts +114 -0
- package/external/pi-tools-suite/src/usage/lib/utils.ts +134 -0
- package/external/pi-tools-suite/src/usage/lib/zhipu.ts +228 -0
- package/external/pi-tools-suite/src/web-search/index.ts +397 -0
- package/package.json +89 -0
- package/skills/context7/SKILL.md +69 -0
- package/skills/context7/scripts/context7.sh +73 -0
- package/skills/handoff/SKILL.md +15 -0
- package/skills/pdf/LICENSE.txt +30 -0
- package/skills/pdf/SKILL.md +314 -0
- package/skills/pdf/forms.md +294 -0
- package/skills/pdf/reference.md +612 -0
- package/skills/pdf/scripts/check_bounding_boxes.py +65 -0
- package/skills/pdf/scripts/check_fillable_fields.py +11 -0
- package/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/skills/pdf/scripts/create_validation_image.py +37 -0
- package/skills/pdf/scripts/extract_form_field_info.py +122 -0
- package/skills/pdf/scripts/extract_form_structure.py +115 -0
- package/skills/pdf/scripts/fill_fillable_fields.py +98 -0
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/skills/playwright-cli/SKILL.md +388 -0
- package/skills/playwright-cli/references/element-attributes.md +23 -0
- package/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/skills/playwright-cli/references/request-mocking.md +87 -0
- package/skills/playwright-cli/references/running-code.md +241 -0
- package/skills/playwright-cli/references/session-management.md +225 -0
- package/skills/playwright-cli/references/spec-driven-testing.md +305 -0
- package/skills/playwright-cli/references/storage-state.md +275 -0
- package/skills/playwright-cli/references/test-generation.md +134 -0
- package/skills/playwright-cli/references/tracing.md +139 -0
- package/skills/playwright-cli/references/video-recording.md +143 -0
- package/skills/simplify/SKILL.md +51 -0
- package/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skill-creator/SKILL.md +485 -0
- package/skills/skill-creator/agents/analyzer.md +274 -0
- package/skills/skill-creator/agents/comparator.md +202 -0
- package/skills/skill-creator/agents/grader.md +223 -0
- package/skills/skill-creator/assets/eval_review.html +146 -0
- package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/skill-creator/references/schemas.md +430 -0
- package/skills/skill-creator/scripts/__init__.py +0 -0
- package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/skill-creator/scripts/generate_report.py +326 -0
- package/skills/skill-creator/scripts/improve_description.py +247 -0
- package/skills/skill-creator/scripts/package_skill.py +136 -0
- package/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/skills/skill-creator/scripts/run_eval.py +310 -0
- package/skills/skill-creator/scripts/run_loop.py +328 -0
- package/skills/skill-creator/scripts/utils.py +47 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { getAgentDir, SettingsManager } from "@earendil-works/pi-coding-agent";
|
|
6
|
+
const DEFAULT_UPDATE_TIMEOUT_MS = 10_000;
|
|
7
|
+
const NPM_REGISTRY_URL = "https://registry.npmjs.org";
|
|
8
|
+
export function pixUpdateUsage() {
|
|
9
|
+
return `Usage: pix update [--check] [--force]
|
|
10
|
+
|
|
11
|
+
Check for or install the latest published Pix package.
|
|
12
|
+
|
|
13
|
+
Options:
|
|
14
|
+
--check Only check for an available update
|
|
15
|
+
--force Reinstall even when Pix appears up to date
|
|
16
|
+
-h, --help Show this help
|
|
17
|
+
|
|
18
|
+
Inside the TUI, /update performs the same non-mutating check.
|
|
19
|
+
The bundled skills payload under skills/ is copied into ~/.agents/skills on startup.
|
|
20
|
+
The pi-tools-suite payload under external/pi-tools-suite is updated with Pix and linked into ~/.pi/agent/extensions on startup.`;
|
|
21
|
+
}
|
|
22
|
+
export function parsePixUpdateArgs(argv) {
|
|
23
|
+
let checkOnly = false;
|
|
24
|
+
let force = false;
|
|
25
|
+
let help = false;
|
|
26
|
+
for (const arg of argv) {
|
|
27
|
+
if (arg === "--check") {
|
|
28
|
+
checkOnly = true;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (arg === "--force") {
|
|
32
|
+
force = true;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (arg === "--help" || arg === "-h") {
|
|
36
|
+
help = true;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
throw new Error(`Unknown pix update argument: ${arg}\n\n${pixUpdateUsage()}`);
|
|
40
|
+
}
|
|
41
|
+
return { checkOnly, force, help };
|
|
42
|
+
}
|
|
43
|
+
export async function checkPixUpdate(options = {}) {
|
|
44
|
+
const packageInfo = readPixPackageInfo(options.packageRoot);
|
|
45
|
+
const base = {
|
|
46
|
+
packageName: packageInfo.name,
|
|
47
|
+
currentVersion: packageInfo.version,
|
|
48
|
+
packageRoot: packageInfo.packageRoot,
|
|
49
|
+
};
|
|
50
|
+
if (packageInfo.private) {
|
|
51
|
+
return {
|
|
52
|
+
...base,
|
|
53
|
+
status: "unavailable",
|
|
54
|
+
reason: "this checkout is marked private in package.json, so it cannot be updated from npm",
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const disabledReason = versionCheckDisabledReason();
|
|
58
|
+
if (disabledReason) {
|
|
59
|
+
return { ...base, status: "skipped", reason: disabledReason };
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const latestVersion = await (options.fetchLatestVersion ?? fetchLatestNpmVersion)(packageInfo.name, packageInfo.version, options.timeoutMs ?? DEFAULT_UPDATE_TIMEOUT_MS);
|
|
63
|
+
if (!latestVersion) {
|
|
64
|
+
return { ...base, status: "unknown", reason: "npm registry did not return a latest version" };
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
...base,
|
|
68
|
+
status: isNewerPackageVersion(latestVersion, packageInfo.version) ? "newer" : "current",
|
|
69
|
+
latestVersion,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
return {
|
|
74
|
+
...base,
|
|
75
|
+
status: "unknown",
|
|
76
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export function formatPixUpdateCheck(result) {
|
|
81
|
+
const lines = [
|
|
82
|
+
"Pix update",
|
|
83
|
+
`current: ${result.packageName} v${result.currentVersion}`,
|
|
84
|
+
...(result.latestVersion ? [`latest: ${result.latestVersion}`] : []),
|
|
85
|
+
];
|
|
86
|
+
switch (result.status) {
|
|
87
|
+
case "current":
|
|
88
|
+
lines.push("status: up to date");
|
|
89
|
+
break;
|
|
90
|
+
case "newer":
|
|
91
|
+
lines.push("status: update available");
|
|
92
|
+
lines.push("run: pix update");
|
|
93
|
+
lines.push("restart Pix after the command completes");
|
|
94
|
+
break;
|
|
95
|
+
case "skipped":
|
|
96
|
+
lines.push(`status: check skipped (${result.reason ?? "disabled"})`);
|
|
97
|
+
break;
|
|
98
|
+
case "unavailable":
|
|
99
|
+
lines.push(`status: update unavailable (${result.reason ?? "unsupported install"})`);
|
|
100
|
+
lines.push(`source checkout: ${sourceCheckoutUpdateHint()}`);
|
|
101
|
+
break;
|
|
102
|
+
case "unknown":
|
|
103
|
+
lines.push(`status: unable to check${result.reason ? ` (${result.reason})` : ""}`);
|
|
104
|
+
lines.push("run: pix update --force to try reinstalling anyway");
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
lines.push("scope: Pix package, renderer extensions, bundled skills copied into ~/.agents/skills, and the pi-tools-suite payload linked into ~/.pi/agent/extensions");
|
|
108
|
+
return lines.join("\n");
|
|
109
|
+
}
|
|
110
|
+
export function getPixSelfUpdateCommand(packageName, latestVersion, packageRoot = readPixPackageInfo().packageRoot) {
|
|
111
|
+
if (!packageRootLooksPackageManaged(packageRoot))
|
|
112
|
+
return undefined;
|
|
113
|
+
const installSpec = latestVersion ? `${packageName}@${latestVersion}` : packageName;
|
|
114
|
+
const method = detectInstallMethod(packageRoot);
|
|
115
|
+
const commandParts = method === "npm" ? configuredNpmCommand() ?? ["npm"] : undefined;
|
|
116
|
+
switch (method) {
|
|
117
|
+
case "npm": {
|
|
118
|
+
const [command = "npm", ...npmArgs] = commandParts ?? ["npm"];
|
|
119
|
+
return makeCommand(command, [...npmArgs, "install", "-g", "--ignore-scripts", "--min-release-age=0", installSpec]);
|
|
120
|
+
}
|
|
121
|
+
case "pnpm":
|
|
122
|
+
return makeCommand("pnpm", ["install", "-g", "--ignore-scripts", "--config.minimumReleaseAge=0", installSpec]);
|
|
123
|
+
case "yarn":
|
|
124
|
+
return makeCommand("yarn", ["global", "add", "--ignore-scripts", installSpec]);
|
|
125
|
+
case "bun":
|
|
126
|
+
return makeCommand("bun", ["install", "-g", "--ignore-scripts", "--minimum-release-age=0", installSpec]);
|
|
127
|
+
case "source":
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export async function runPixUpdateCli(argv = process.argv.slice(2)) {
|
|
132
|
+
let options;
|
|
133
|
+
try {
|
|
134
|
+
options = parsePixUpdateArgs(argv);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
138
|
+
return 1;
|
|
139
|
+
}
|
|
140
|
+
if (options.help) {
|
|
141
|
+
console.log(pixUpdateUsage());
|
|
142
|
+
return 0;
|
|
143
|
+
}
|
|
144
|
+
const check = await checkPixUpdate();
|
|
145
|
+
console.log(formatPixUpdateCheck(check));
|
|
146
|
+
if (options.checkOnly)
|
|
147
|
+
return check.status === "unavailable" ? 1 : 0;
|
|
148
|
+
if (check.status === "current" && !options.force)
|
|
149
|
+
return 0;
|
|
150
|
+
if ((check.status === "skipped" || check.status === "unavailable") && !options.force)
|
|
151
|
+
return 1;
|
|
152
|
+
const command = getPixSelfUpdateCommand(check.packageName, check.latestVersion);
|
|
153
|
+
if (!command) {
|
|
154
|
+
console.error(`pix cannot self-update this installation. ${sourceCheckoutUpdateHint()}`);
|
|
155
|
+
return 1;
|
|
156
|
+
}
|
|
157
|
+
console.log(`Updating Pix with ${command.display}...`);
|
|
158
|
+
try {
|
|
159
|
+
await runCommand(command);
|
|
160
|
+
console.log("Updated Pix. Restart any running pix sessions.");
|
|
161
|
+
return 0;
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
console.error(`Pix update failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
165
|
+
console.error(`Try running manually: ${command.display}`);
|
|
166
|
+
return 1;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function readPixPackageInfo(packageRoot = findPixPackageRoot()) {
|
|
170
|
+
const packageJsonPath = join(packageRoot, "package.json");
|
|
171
|
+
const raw = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
|
172
|
+
const name = typeof raw.name === "string" && raw.name.trim() ? raw.name.trim() : "pi-ui-extend";
|
|
173
|
+
const version = typeof raw.version === "string" && raw.version.trim() ? raw.version.trim() : "0.0.0";
|
|
174
|
+
return {
|
|
175
|
+
name,
|
|
176
|
+
version,
|
|
177
|
+
private: raw.private === true,
|
|
178
|
+
packageRoot,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function findPixPackageRoot() {
|
|
182
|
+
let currentDir = dirname(fileURLToPath(import.meta.url));
|
|
183
|
+
while (true) {
|
|
184
|
+
const packageJsonPath = join(currentDir, "package.json");
|
|
185
|
+
if (existsSync(packageJsonPath))
|
|
186
|
+
return currentDir;
|
|
187
|
+
const nextDir = dirname(currentDir);
|
|
188
|
+
if (nextDir === currentDir)
|
|
189
|
+
throw new Error("Could not find pix package.json");
|
|
190
|
+
currentDir = nextDir;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
async function fetchLatestNpmVersion(packageName, currentVersion, timeoutMs) {
|
|
194
|
+
const response = await fetch(`${NPM_REGISTRY_URL}/${encodeURIComponent(packageName)}/latest`, {
|
|
195
|
+
headers: {
|
|
196
|
+
accept: "application/json",
|
|
197
|
+
"User-Agent": `pix/${currentVersion}`,
|
|
198
|
+
},
|
|
199
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
200
|
+
});
|
|
201
|
+
if (response.status === 404)
|
|
202
|
+
return undefined;
|
|
203
|
+
if (!response.ok)
|
|
204
|
+
throw new Error(`npm registry returned ${response.status}`);
|
|
205
|
+
const data = await response.json();
|
|
206
|
+
return typeof data.version === "string" && data.version.trim() ? data.version.trim() : undefined;
|
|
207
|
+
}
|
|
208
|
+
function versionCheckDisabledReason() {
|
|
209
|
+
if (truthyEnv(process.env.PI_OFFLINE))
|
|
210
|
+
return "PI_OFFLINE is set";
|
|
211
|
+
if (truthyEnv(process.env.PI_SKIP_VERSION_CHECK))
|
|
212
|
+
return "PI_SKIP_VERSION_CHECK is set";
|
|
213
|
+
if (truthyEnv(process.env.PIX_SKIP_VERSION_CHECK))
|
|
214
|
+
return "PIX_SKIP_VERSION_CHECK is set";
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
function truthyEnv(value) {
|
|
218
|
+
if (!value)
|
|
219
|
+
return false;
|
|
220
|
+
return !["0", "false", "no", "off"].includes(value.toLowerCase());
|
|
221
|
+
}
|
|
222
|
+
function packageRootLooksPackageManaged(packageRoot) {
|
|
223
|
+
return normalizePath(packageRoot).includes("/node_modules/");
|
|
224
|
+
}
|
|
225
|
+
function detectInstallMethod(packageRoot) {
|
|
226
|
+
const normalized = normalizePath(`${packageRoot}\0${process.execPath || ""}`);
|
|
227
|
+
if (!packageRootLooksPackageManaged(packageRoot))
|
|
228
|
+
return "source";
|
|
229
|
+
if (normalized.includes("/.pnpm/") || normalized.includes("/pnpm/"))
|
|
230
|
+
return "pnpm";
|
|
231
|
+
if (normalized.includes("/.yarn/") || normalized.includes("/yarn/"))
|
|
232
|
+
return "yarn";
|
|
233
|
+
if (process.versions.bun || normalized.includes("/.bun/") || normalized.includes("/install/global/node_modules/"))
|
|
234
|
+
return "bun";
|
|
235
|
+
return "npm";
|
|
236
|
+
}
|
|
237
|
+
function configuredNpmCommand() {
|
|
238
|
+
try {
|
|
239
|
+
return SettingsManager.create(process.cwd(), getAgentDir()).getNpmCommand();
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function makeCommand(command, args) {
|
|
246
|
+
return {
|
|
247
|
+
command,
|
|
248
|
+
args,
|
|
249
|
+
display: [command, ...args].map(shellDisplayQuote).join(" "),
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
function shellDisplayQuote(value) {
|
|
253
|
+
if (/^[A-Za-z0-9_@%+=:,./-]+$/.test(value))
|
|
254
|
+
return value;
|
|
255
|
+
return `"${value.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"")}"`;
|
|
256
|
+
}
|
|
257
|
+
function normalizePath(pathValue) {
|
|
258
|
+
return resolve(pathValue).toLowerCase().replace(/\\/g, "/");
|
|
259
|
+
}
|
|
260
|
+
function sourceCheckoutUpdateHint() {
|
|
261
|
+
return "from a source checkout, run `git pull && npm install --ignore-scripts && npm run build:pix && npm run link:pix`";
|
|
262
|
+
}
|
|
263
|
+
function isNewerPackageVersion(candidateVersion, currentVersion) {
|
|
264
|
+
const comparison = comparePackageVersions(candidateVersion, currentVersion);
|
|
265
|
+
if (comparison !== undefined)
|
|
266
|
+
return comparison > 0;
|
|
267
|
+
return candidateVersion.trim() !== currentVersion.trim();
|
|
268
|
+
}
|
|
269
|
+
function comparePackageVersions(leftVersion, rightVersion) {
|
|
270
|
+
const left = parsePackageVersion(leftVersion);
|
|
271
|
+
const right = parsePackageVersion(rightVersion);
|
|
272
|
+
if (!left || !right)
|
|
273
|
+
return undefined;
|
|
274
|
+
if (left.major !== right.major)
|
|
275
|
+
return left.major - right.major;
|
|
276
|
+
if (left.minor !== right.minor)
|
|
277
|
+
return left.minor - right.minor;
|
|
278
|
+
if (left.patch !== right.patch)
|
|
279
|
+
return left.patch - right.patch;
|
|
280
|
+
if (left.prerelease === right.prerelease)
|
|
281
|
+
return 0;
|
|
282
|
+
if (!left.prerelease)
|
|
283
|
+
return 1;
|
|
284
|
+
if (!right.prerelease)
|
|
285
|
+
return -1;
|
|
286
|
+
return left.prerelease.localeCompare(right.prerelease);
|
|
287
|
+
}
|
|
288
|
+
function parsePackageVersion(version) {
|
|
289
|
+
const match = version.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+.*)?$/u);
|
|
290
|
+
if (!match)
|
|
291
|
+
return undefined;
|
|
292
|
+
return {
|
|
293
|
+
major: Number.parseInt(match[1] ?? "0", 10),
|
|
294
|
+
minor: Number.parseInt(match[2] ?? "0", 10),
|
|
295
|
+
patch: Number.parseInt(match[3] ?? "0", 10),
|
|
296
|
+
...(match[4] === undefined ? {} : { prerelease: match[4] }),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
async function runCommand(command) {
|
|
300
|
+
await new Promise((resolvePromise, reject) => {
|
|
301
|
+
const child = spawn(command.command, command.args, { stdio: "inherit" });
|
|
302
|
+
child.on("error", reject);
|
|
303
|
+
child.on("close", (code, signal) => {
|
|
304
|
+
if (code === 0) {
|
|
305
|
+
resolvePromise();
|
|
306
|
+
}
|
|
307
|
+
else if (signal) {
|
|
308
|
+
reject(new Error(`${command.display} terminated by signal ${signal}`));
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
reject(new Error(`${command.display} exited with code ${code ?? "unknown"}`));
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type DictationConfig } from "../config.js";
|
|
2
|
+
export type VoiceLanguage = string;
|
|
3
|
+
export type VoiceInputState = "idle" | "installing" | "downloading" | "loading" | "listening";
|
|
4
|
+
export type AppVoiceControllerHost = {
|
|
5
|
+
insertTranscript(text: string): void;
|
|
6
|
+
setPartialTranscript(text: string | undefined): void;
|
|
7
|
+
addSystemMessage(message: string): void;
|
|
8
|
+
showToast(message: string, kind: "success" | "error" | "warning" | "info"): void;
|
|
9
|
+
render(): void;
|
|
10
|
+
};
|
|
11
|
+
export declare class AppVoiceController {
|
|
12
|
+
private readonly host;
|
|
13
|
+
private readonly modelDefinitions;
|
|
14
|
+
private readonly languages;
|
|
15
|
+
private language;
|
|
16
|
+
private state;
|
|
17
|
+
private readonly modelCache;
|
|
18
|
+
private audioProcess;
|
|
19
|
+
private recognizer;
|
|
20
|
+
private progressMessage;
|
|
21
|
+
private progressFrame;
|
|
22
|
+
private progressTimer;
|
|
23
|
+
private lastSystemProgressMessage;
|
|
24
|
+
private partialTranscript;
|
|
25
|
+
private startGeneration;
|
|
26
|
+
constructor(host: AppVoiceControllerHost, dictationConfig: DictationConfig);
|
|
27
|
+
statusWidgetText(): string;
|
|
28
|
+
showLanguageSwitcher(): boolean;
|
|
29
|
+
statusWidgetActive(): boolean;
|
|
30
|
+
progressOverlayText(): string | undefined;
|
|
31
|
+
toggleRecording(): Promise<void>;
|
|
32
|
+
toggleLanguage(): Promise<void>;
|
|
33
|
+
stopRecording(): Promise<void>;
|
|
34
|
+
dispose(): Promise<void>;
|
|
35
|
+
private startRecording;
|
|
36
|
+
private cachedModel;
|
|
37
|
+
private nextLanguage;
|
|
38
|
+
private initialLanguage;
|
|
39
|
+
private saveLanguageSelection;
|
|
40
|
+
private modelDefinition;
|
|
41
|
+
private installAndLoadVosk;
|
|
42
|
+
private bindAudioProcess;
|
|
43
|
+
private cleanupRecognizer;
|
|
44
|
+
private setProgressMessage;
|
|
45
|
+
private clearProgressMessage;
|
|
46
|
+
private addProgressSystemMessage;
|
|
47
|
+
private emitTranscript;
|
|
48
|
+
private emitPartialTranscript;
|
|
49
|
+
private clearPartialTranscript;
|
|
50
|
+
private isCurrentStart;
|
|
51
|
+
private isCurrentAudioProcess;
|
|
52
|
+
}
|