lsd-pi 1.1.2 → 1.1.3
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 +2 -1
- package/dist/bedrock-auth.d.ts +25 -0
- package/dist/bedrock-auth.js +59 -0
- package/dist/headless.js +8 -3
- package/dist/loader.js +1 -0
- package/dist/onboarding-llm.d.ts +37 -0
- package/dist/onboarding-llm.js +64 -0
- package/dist/onboarding.d.ts +2 -14
- package/dist/onboarding.js +146 -71
- package/dist/pi-migration.js +1 -0
- package/dist/resources/extensions/memory/auto-extract.js +21 -3
- package/dist/resources/extensions/memory/dream.js +703 -0
- package/dist/resources/extensions/memory/extension-manifest.json +2 -2
- package/dist/resources/extensions/memory/index.js +115 -8
- package/dist/resources/extensions/slash-commands/extension-manifest.json +10 -10
- package/dist/resources/extensions/slash-commands/index.js +0 -4
- package/dist/resources/extensions/slash-commands/plan.js +181 -45
- package/dist/resources/extensions/subagent/agents.js +14 -1
- package/dist/resources/extensions/subagent/configured-model.js +3 -2
- package/dist/resources/extensions/subagent/index.js +34 -28
- package/dist/resources/extensions/subagent/launch-helpers.js +24 -0
- package/dist/resources/extensions/subagent/model-resolution.js +41 -3
- package/dist/resources/extensions/usage/extension-manifest.json +11 -0
- package/dist/resources/extensions/usage/index.js +346 -0
- package/{src/resources/skills/create-gsd-extension → dist/resources/skills/create-lsd-extension}/SKILL.md +6 -6
- package/{src/resources/skills/create-gsd-extension → dist/resources/skills/create-lsd-extension}/references/custom-tools.md +1 -1
- package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/extension-lifecycle.md +2 -2
- package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/extensioncontext-reference.md +1 -1
- package/{src/resources/skills/create-gsd-extension → dist/resources/skills/create-lsd-extension}/references/key-rules-gotchas.md +4 -4
- package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/packaging-distribution.md +6 -6
- package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/workflows/create-extension.md +3 -3
- package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/workflows/debug-extension.md +5 -5
- package/dist/resources/skills/teams-debug/SKILL.md +5 -6
- package/dist/resources/skills/teams-document/SKILL.md +1 -2
- package/dist/resources/skills/teams-plan/SKILL.md +3 -4
- package/dist/resources/skills/teams-run/SKILL.md +3 -4
- package/dist/resources/skills/teams-verify/SKILL.md +4 -5
- package/dist/startup-model-validation.js +1 -0
- package/dist/welcome-screen.js +13 -11
- package/dist/wizard.js +12 -0
- package/package.json +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +688 -409
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +761 -488
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/scripts/generate-models.ts +40 -18
- package/packages/pi-ai/src/models.generated.ts +759 -486
- package/packages/pi-coding-agent/dist/cli/config-selector.js +1 -1
- package/packages/pi-coding-agent/dist/cli/config-selector.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts +1 -2
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +6 -30
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +6 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +44 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/skill-tool.test.js +9 -5
- package/packages/pi-coding-agent/dist/core/skill-tool.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/skills.js +3 -2
- package/packages/pi-coding-agent/dist/core/skills.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/main.js +1 -1
- package/packages/pi-coding-agent/dist/main.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.js +2 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +15 -12
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +6 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +25 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +10 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +31 -22
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +18 -5
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +139 -20
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +4 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/cli/config-selector.ts +1 -1
- package/packages/pi-coding-agent/src/core/agent-session.ts +5 -28
- package/packages/pi-coding-agent/src/core/settings-manager.ts +52 -1
- package/packages/pi-coding-agent/src/core/skill-tool.test.ts +18 -5
- package/packages/pi-coding-agent/src/core/skills.ts +3 -2
- package/packages/pi-coding-agent/src/index.ts +1 -1
- package/packages/pi-coding-agent/src/main.ts +1 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/bash-execution.ts +2 -2
- package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +12 -13
- package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +39 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +1 -1
- package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +10 -0
- package/packages/pi-coding-agent/src/modes/interactive/controllers/extension-ui-controller.ts +1 -1
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +46 -20
- package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +171 -20
- package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +4 -0
- package/packages/pi-tui/dist/components/editor.d.ts +1 -0
- package/packages/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/packages/pi-tui/dist/components/editor.js +23 -0
- package/packages/pi-tui/dist/components/editor.js.map +1 -1
- package/packages/pi-tui/src/components/editor.ts +23 -0
- package/pkg/dist/modes/interactive/theme/theme.d.ts +18 -5
- package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/pkg/dist/modes/interactive/theme/theme.js +139 -20
- package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
- package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
- package/pkg/dist/modes/interactive/theme/themes.js +4 -0
- package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
- package/pkg/package.json +1 -1
- package/src/resources/extensions/memory/auto-extract.ts +23 -3
- package/src/resources/extensions/memory/dream.ts +814 -0
- package/src/resources/extensions/memory/extension-manifest.json +2 -2
- package/src/resources/extensions/memory/index.ts +134 -13
- package/src/resources/extensions/memory/tests/auto-extract.test.ts +10 -2
- package/src/resources/extensions/memory/tests/dream.test.ts +142 -0
- package/src/resources/extensions/slash-commands/extension-manifest.json +10 -10
- package/src/resources/extensions/slash-commands/index.ts +3 -7
- package/src/resources/extensions/slash-commands/plan.ts +192 -46
- package/src/resources/extensions/subagent/agents.ts +11 -1
- package/src/resources/extensions/subagent/configured-model.ts +3 -2
- package/src/resources/extensions/subagent/index.ts +38 -30
- package/src/resources/extensions/subagent/launch-helpers.ts +30 -0
- package/src/resources/extensions/subagent/model-resolution.ts +40 -3
- package/src/resources/extensions/usage/extension-manifest.json +11 -0
- package/src/resources/extensions/usage/index.ts +441 -0
- package/{dist/resources/skills/create-gsd-extension → src/resources/skills/create-lsd-extension}/SKILL.md +6 -6
- package/{dist/resources/skills/create-gsd-extension → src/resources/skills/create-lsd-extension}/references/custom-tools.md +1 -1
- package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/extension-lifecycle.md +2 -2
- package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/extensioncontext-reference.md +1 -1
- package/{dist/resources/skills/create-gsd-extension → src/resources/skills/create-lsd-extension}/references/key-rules-gotchas.md +4 -4
- package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/packaging-distribution.md +6 -6
- package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/workflows/create-extension.md +3 -3
- package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/workflows/debug-extension.md +5 -5
- package/src/resources/skills/teams-debug/SKILL.md +5 -6
- package/src/resources/skills/teams-document/SKILL.md +1 -2
- package/src/resources/skills/teams-plan/SKILL.md +3 -4
- package/src/resources/skills/teams-run/SKILL.md +3 -4
- package/src/resources/skills/teams-verify/SKILL.md +4 -5
- package/dist/resources/extensions/slash-commands/create-extension.js +0 -264
- package/dist/resources/extensions/slash-commands/create-slash-command.js +0 -208
- package/src/resources/extensions/slash-commands/create-extension.ts +0 -297
- package/src/resources/extensions/slash-commands/create-slash-command.ts +0 -234
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/compaction-session-control.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/custom-commands.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/custom-rendering.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/custom-ui.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/events-reference.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/extensionapi-reference.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/mode-behavior.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/model-provider-management.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/remote-execution-overrides.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/state-management.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/system-prompt-modification.md +0 -0
- /package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/workflows/add-capability.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/compaction-session-control.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/custom-commands.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/custom-rendering.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/custom-ui.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/events-reference.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/extensionapi-reference.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/mode-behavior.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/model-provider-management.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/remote-execution-overrides.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/state-management.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/system-prompt-modification.md +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/templates/extension-skeleton.ts +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/templates/stateful-tool-skeleton.ts +0 -0
- /package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/workflows/add-capability.md +0 -0
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@gsd/pi-coding-agent";
|
|
2
|
-
import { showInterviewRound, type Question, type RoundResult } from "../shared/tui.js";
|
|
3
|
-
|
|
4
|
-
export default function createSlashCommand(pi: ExtensionAPI) {
|
|
5
|
-
pi.registerCommand("create-slash-command", {
|
|
6
|
-
description: "Generate a new slash command extension from a plain-English description",
|
|
7
|
-
async handler(args, ctx) {
|
|
8
|
-
const inlineDescription = (typeof args === "string" ? args : "").trim();
|
|
9
|
-
|
|
10
|
-
// ── Interview — always run, no free-text step first ───────────────────
|
|
11
|
-
//
|
|
12
|
-
// If the user already typed a description as args, we skip the "what
|
|
13
|
-
// should it do?" question and go straight to the behaviour questions.
|
|
14
|
-
// Otherwise it's the first question in the round.
|
|
15
|
-
|
|
16
|
-
const questions: Question[] = [
|
|
17
|
-
...(!inlineDescription
|
|
18
|
-
? [
|
|
19
|
-
{
|
|
20
|
-
id: "purpose",
|
|
21
|
-
header: "Purpose",
|
|
22
|
-
question: "What should this slash command do?",
|
|
23
|
-
options: [
|
|
24
|
-
{
|
|
25
|
-
label: "Automate git workflow",
|
|
26
|
-
description: "Commit, branch, diff, stash — anything git-related.",
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
label: "Send a crafted prompt",
|
|
30
|
-
description: "Build a rich context prompt and hand it to the LLM.",
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
label: "Run a shell task",
|
|
34
|
-
description: "Execute CLI tools (npm, docker, etc.) and show the output.",
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
label: "Something else",
|
|
38
|
-
description: "Describe it in the notes field below.",
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
} satisfies Question,
|
|
42
|
-
]
|
|
43
|
-
: []),
|
|
44
|
-
{
|
|
45
|
-
id: "trigger",
|
|
46
|
-
header: "Trigger",
|
|
47
|
-
question: "How does this command kick off its work?",
|
|
48
|
-
options: [
|
|
49
|
-
{
|
|
50
|
-
label: "Sends to agent",
|
|
51
|
-
description: "Builds a prompt and hands off to the LLM to do the heavy lifting.",
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
label: "Runs shell commands",
|
|
55
|
-
description: "Executes CLI commands directly (git, npm, etc.) without an LLM turn.",
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
label: "Shows a UI prompt",
|
|
59
|
-
description: "Pops up a select/input dialog to gather more info, then acts.",
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
label: "Mixed — UI then agent",
|
|
63
|
-
description: "Collects some info via a dialog, then sends a crafted prompt to the LLM.",
|
|
64
|
-
},
|
|
65
|
-
],
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
id: "output",
|
|
69
|
-
header: "Output",
|
|
70
|
-
question: "How should the command communicate results to the user?",
|
|
71
|
-
options: [
|
|
72
|
-
{
|
|
73
|
-
label: "Agent response",
|
|
74
|
-
description: "The LLM writes the response — the command just triggers the turn.",
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
label: "Notification",
|
|
78
|
-
description: "A brief inline notification (success/error/info) — no agent turn.",
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
label: "Command output",
|
|
82
|
-
description: "Shows raw shell output or a formatted summary in the chat.",
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
id: "args",
|
|
88
|
-
header: "Arguments",
|
|
89
|
-
question: "Does the command take arguments when invoked?",
|
|
90
|
-
options: [
|
|
91
|
-
{
|
|
92
|
-
label: "No args needed",
|
|
93
|
-
description: "Called as just /command-name — gathers everything it needs at runtime.",
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
label: "Optional freeform arg",
|
|
97
|
-
description: "User can type /command-name <something>, but it works without it too.",
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
label: "Required arg",
|
|
101
|
-
description: "Needs a specific value typed after the name; shows usage if missing.",
|
|
102
|
-
},
|
|
103
|
-
],
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
id: "complexity",
|
|
107
|
-
header: "Complexity",
|
|
108
|
-
question: "How complex does the implementation need to be?",
|
|
109
|
-
options: [
|
|
110
|
-
{
|
|
111
|
-
label: "Simple — one action",
|
|
112
|
-
description: "Does one thing in a handful of lines. Easy to follow.",
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
label: "Moderate — a few steps",
|
|
116
|
-
description: "Some branching, maybe a shell call or two, a conditional prompt.",
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
label: "Complex — multi-step",
|
|
120
|
-
description: "Multiple async steps, error handling, state, or UI interactions.",
|
|
121
|
-
},
|
|
122
|
-
],
|
|
123
|
-
},
|
|
124
|
-
];
|
|
125
|
-
|
|
126
|
-
const result: RoundResult = await showInterviewRound(
|
|
127
|
-
questions,
|
|
128
|
-
{
|
|
129
|
-
progress: "New slash command · Context",
|
|
130
|
-
reviewHeadline: "Review your choices",
|
|
131
|
-
exitHeadline: "Cancel command creation?",
|
|
132
|
-
exitLabel: "cancel",
|
|
133
|
-
},
|
|
134
|
-
ctx,
|
|
135
|
-
);
|
|
136
|
-
|
|
137
|
-
// User hit Esc with nothing answered — bail silently
|
|
138
|
-
if (!result.answers || Object.keys(result.answers).length === 0) {
|
|
139
|
-
ctx.ui.notify("Cancelled.", "info");
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// ── Resolve description ───────────────────────────────────────────────
|
|
144
|
-
|
|
145
|
-
let description = inlineDescription;
|
|
146
|
-
if (!description) {
|
|
147
|
-
const purpose = result.answers["purpose"];
|
|
148
|
-
if (purpose) {
|
|
149
|
-
const selected = Array.isArray(purpose.selected) ? purpose.selected[0] : purpose.selected;
|
|
150
|
-
description = purpose.notes
|
|
151
|
-
? purpose.notes // prefer their own words from the notes field
|
|
152
|
-
: selected;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (!description) {
|
|
157
|
-
ctx.ui.notify("No description captured — add details in the notes field next time.", "warning");
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// ── Build and send the enriched prompt ────────────────────────────────
|
|
162
|
-
|
|
163
|
-
sendPrompt(description, result, pi);
|
|
164
|
-
},
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// ─── Prompt builder ───────────────────────────────────────────────────────────
|
|
169
|
-
|
|
170
|
-
function formatAnswers(result: RoundResult): string {
|
|
171
|
-
const lines: string[] = [];
|
|
172
|
-
|
|
173
|
-
const purpose = result.answers["purpose"];
|
|
174
|
-
if (purpose?.notes) {
|
|
175
|
-
lines.push(`- **Command goal (user's words)**: ${purpose.notes}`);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
const trigger = result.answers["trigger"];
|
|
179
|
-
if (trigger) {
|
|
180
|
-
const selected = Array.isArray(trigger.selected) ? trigger.selected[0] : trigger.selected;
|
|
181
|
-
lines.push(`- **Trigger pattern**: ${selected}${trigger.notes ? ` — ${trigger.notes}` : ""}`);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
const output = result.answers["output"];
|
|
185
|
-
if (output) {
|
|
186
|
-
const selected = Array.isArray(output.selected) ? output.selected[0] : output.selected;
|
|
187
|
-
lines.push(`- **Output style**: ${selected}${output.notes ? ` — ${output.notes}` : ""}`);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
const argsAnswer = result.answers["args"];
|
|
191
|
-
if (argsAnswer) {
|
|
192
|
-
const selected = Array.isArray(argsAnswer.selected) ? argsAnswer.selected[0] : argsAnswer.selected;
|
|
193
|
-
lines.push(`- **Arguments**: ${selected}${argsAnswer.notes ? ` — ${argsAnswer.notes}` : ""}`);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
const complexity = result.answers["complexity"];
|
|
197
|
-
if (complexity) {
|
|
198
|
-
const selected = Array.isArray(complexity.selected) ? complexity.selected[0] : complexity.selected;
|
|
199
|
-
lines.push(`- **Complexity**: ${selected}${complexity.notes ? ` — ${complexity.notes}` : ""}`);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
return lines.join("\n");
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
function sendPrompt(description: string, result: RoundResult, pi: ExtensionAPI): void {
|
|
206
|
-
const contextSection = `\n## Context gathered from user\n${formatAnswers(result)}\n`;
|
|
207
|
-
|
|
208
|
-
const prompt = `Create a new pi slash command extension based on this description:
|
|
209
|
-
|
|
210
|
-
"${description}"
|
|
211
|
-
${contextSection}
|
|
212
|
-
Write the complete file contents for two files:
|
|
213
|
-
|
|
214
|
-
1. \`~/.gsd/agent/extensions/slash-commands/<name>.ts\` — the command implementation
|
|
215
|
-
2. Update \`~/.gsd/agent/extensions/slash-commands/index.ts\` — import and register the new command alongside existing ones
|
|
216
|
-
|
|
217
|
-
Rules you must follow exactly:
|
|
218
|
-
- Command registration: \`pi.registerCommand("name", { description, handler })\`
|
|
219
|
-
- Handler signature: \`async handler(args: string, ctx: ExtensionCommandContext)\`
|
|
220
|
-
- \`args\` is the raw string typed after the command name (may be empty)
|
|
221
|
-
- To send a message to the agent: \`pi.sendUserMessage("...")\` — this triggers an agent turn
|
|
222
|
-
- To show a quick notification without triggering a turn: \`ctx.ui.notify("...", "info" | "success" | "error")\`
|
|
223
|
-
- To run a shell command: \`await pi.exec("cmd", ["arg1", "arg2"])\` — returns \`{ stdout, stderr, exitCode }\`
|
|
224
|
-
- To show a select dialog: \`await ctx.ui.select("prompt", ["Option A", "Option B"])\` — returns the chosen string
|
|
225
|
-
- To show a text input dialog: \`await ctx.ui.input("prompt", "placeholder")\` — returns the string or null
|
|
226
|
-
- \`pi\` is captured in closure from the outer \`export default function(pi: ExtensionAPI)\` — use it freely inside the handler
|
|
227
|
-
- No \`ctx.session\`, no \`ctx.sendMessage\`, no \`args[]\` array — these do not exist
|
|
228
|
-
- Import type: \`import type { ExtensionAPI, ExtensionCommandContext } from "@gsd/pi-coding-agent";\`
|
|
229
|
-
- Export default: \`export default function <camelCaseName>(pi: ExtensionAPI) { ... }\`
|
|
230
|
-
|
|
231
|
-
After writing the files, run \`/reload\` to load the new command.`;
|
|
232
|
-
|
|
233
|
-
pi.sendUserMessage(prompt);
|
|
234
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/resources/skills/{create-gsd-extension → create-lsd-extension}/references/custom-ui.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/resources/skills/{create-gsd-extension → create-lsd-extension}/references/custom-ui.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|