@gxp-dev/tools 2.0.74 → 2.0.76
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/bin/gx-devtools.js +15 -2
- package/bin/lib/commands/init.js +21 -2
- package/bin/lib/tui/App.tsx +10 -2
- package/bin/lib/tui/components/WelcomeScreen.tsx +39 -1
- package/bin/lib/tui/index.tsx +13 -1
- package/bin/lib/utils/ai-scaffold.js +67 -6
- package/bin/lib/utils/index.js +2 -0
- package/bin/lib/utils/version-check.js +255 -0
- package/dist/tui/App.d.ts +8 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +2 -2
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/WelcomeScreen.d.ts +11 -1
- package/dist/tui/components/WelcomeScreen.d.ts.map +1 -1
- package/dist/tui/components/WelcomeScreen.js +3 -2
- package/dist/tui/components/WelcomeScreen.js.map +1 -1
- package/dist/tui/index.d.ts +7 -0
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +1 -1
- package/dist/tui/index.js.map +1 -1
- package/package.json +1 -1
- package/template/.claude/agents/gxp-developer.md +2 -0
- package/template/.claude/settings.json +2 -6
- package/template/AGENTS.md +2 -0
- package/template/GEMINI.md +2 -0
- package/template/gemini/settings.json +8 -0
- package/template/mcp.json +8 -0
package/bin/gx-devtools.js
CHANGED
|
@@ -15,13 +15,25 @@
|
|
|
15
15
|
const args = process.argv.slice(2)
|
|
16
16
|
const command = args[0]
|
|
17
17
|
|
|
18
|
+
// Kick off a best-effort npm version check on every gxdev invocation. The
|
|
19
|
+
// util throttles itself to at most one network hit per 24 hours and stays
|
|
20
|
+
// fully non-blocking — if it fails, the CLI is unaffected.
|
|
21
|
+
const {
|
|
22
|
+
maybeRunBackgroundCheck,
|
|
23
|
+
registerCliExitReminder,
|
|
24
|
+
getCachedUpdateInfo,
|
|
25
|
+
} = require("./lib/utils/version-check")
|
|
26
|
+
maybeRunBackgroundCheck()
|
|
27
|
+
|
|
18
28
|
// TUI activation: bare `ui` command OR any invocation with `--ui`.
|
|
19
29
|
const uiFlagPresent = args.includes("--ui")
|
|
20
30
|
const isBareUiCommand = command === "ui"
|
|
21
31
|
const wantsUi = uiFlagPresent || isBareUiCommand
|
|
22
32
|
|
|
23
33
|
if (!wantsUi) {
|
|
24
|
-
//
|
|
34
|
+
// Plain CLI path — have the utility print an update reminder on exit
|
|
35
|
+
// (stderr) if the cached info says we're behind.
|
|
36
|
+
registerCliExitReminder()
|
|
25
37
|
require("./lib/cli")
|
|
26
38
|
return
|
|
27
39
|
}
|
|
@@ -75,7 +87,8 @@ switch (isBareUiCommand ? null : command) {
|
|
|
75
87
|
;(async () => {
|
|
76
88
|
try {
|
|
77
89
|
const { startTUI } = await import(tuiPath)
|
|
78
|
-
|
|
90
|
+
const updateInfo = getCachedUpdateInfo()
|
|
91
|
+
startTUI({ autoStart, args: tuiArgs, updateInfo })
|
|
79
92
|
} catch (err) {
|
|
80
93
|
if (err && err.message === "NO_TTY") {
|
|
81
94
|
console.error("The GxP TUI requires an interactive terminal (TTY).")
|
package/bin/lib/commands/init.js
CHANGED
|
@@ -171,7 +171,21 @@ function copyBundleFiles(projectPath, paths, overwrite = false) {
|
|
|
171
171
|
{
|
|
172
172
|
src: ".claude/settings.json",
|
|
173
173
|
dest: ".claude/settings.json",
|
|
174
|
-
desc: "Claude Code
|
|
174
|
+
desc: "Claude Code project settings (auto-allow gxp-api MCP tools)",
|
|
175
|
+
},
|
|
176
|
+
// Canonical project-scoped MCP config files. The AI CLIs each look for
|
|
177
|
+
// their own file at the project root and auto-load the `gxp-api` server
|
|
178
|
+
// from there. The `gxp-api-server` binary is installed on PATH by
|
|
179
|
+
// @gxp-dev/tools, so no extra install step is required.
|
|
180
|
+
{
|
|
181
|
+
src: "mcp.json",
|
|
182
|
+
dest: ".mcp.json",
|
|
183
|
+
desc: ".mcp.json (Claude Code project-scoped MCP config)",
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
src: "gemini/settings.json",
|
|
187
|
+
dest: ".gemini/settings.json",
|
|
188
|
+
desc: ".gemini/settings.json (Gemini CLI project-scoped MCP config)",
|
|
175
189
|
},
|
|
176
190
|
]
|
|
177
191
|
|
|
@@ -506,14 +520,19 @@ async function runInteractiveConfig(projectPath, initialName, isLocal = false) {
|
|
|
506
520
|
|
|
507
521
|
// If an AI agent was chosen, it becomes the last step — skip starting the
|
|
508
522
|
// dev server. The agent is responsible for driving the rest of the session.
|
|
523
|
+
//
|
|
524
|
+
// Print the project-ready summary BEFORE we hand stdin/stdout to the agent
|
|
525
|
+
// so the user sees "setup complete, here's how to start the dev server"
|
|
526
|
+
// up front. Once the agent owns the terminal the init script is done — it
|
|
527
|
+
// won't print anything else on the way out.
|
|
509
528
|
if (selectedProvider) {
|
|
529
|
+
printFinalInstructions(projectPath, appName, sslSetup, isLocal)
|
|
510
530
|
await launchInteractiveAISession(
|
|
511
531
|
projectPath,
|
|
512
532
|
appName,
|
|
513
533
|
description,
|
|
514
534
|
selectedProvider,
|
|
515
535
|
)
|
|
516
|
-
printFinalInstructions(projectPath, appName, sslSetup, isLocal)
|
|
517
536
|
return null
|
|
518
537
|
}
|
|
519
538
|
|
package/bin/lib/tui/App.tsx
CHANGED
|
@@ -43,12 +43,20 @@ interface ExtractedConfig {
|
|
|
43
43
|
}>
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
export interface UpdateInfo {
|
|
47
|
+
currentVersion: string
|
|
48
|
+
latestVersion: string | null
|
|
49
|
+
updateAvailable: boolean
|
|
50
|
+
lastCheckedAt: number | null
|
|
51
|
+
}
|
|
52
|
+
|
|
46
53
|
export interface AppProps {
|
|
47
54
|
autoStart?: string[]
|
|
48
55
|
args?: Record<string, unknown>
|
|
56
|
+
updateInfo?: UpdateInfo | null
|
|
49
57
|
}
|
|
50
58
|
|
|
51
|
-
export default function App({ autoStart, args }: AppProps) {
|
|
59
|
+
export default function App({ autoStart, args, updateInfo }: AppProps) {
|
|
52
60
|
const { exit } = useApp()
|
|
53
61
|
const { stdout } = useStdout()
|
|
54
62
|
const [showAIPanel, setShowAIPanel] = useState(false)
|
|
@@ -808,7 +816,7 @@ Keyboard shortcuts:
|
|
|
808
816
|
{currentService ? (
|
|
809
817
|
<LogPanel logs={currentService.logs} maxHeight={logPanelHeight} />
|
|
810
818
|
) : (
|
|
811
|
-
<WelcomeScreen />
|
|
819
|
+
<WelcomeScreen updateInfo={updateInfo} />
|
|
812
820
|
)}
|
|
813
821
|
</Box>
|
|
814
822
|
|
|
@@ -21,7 +21,21 @@ const LOGO = `
|
|
|
21
21
|
╚═════╝ ╚═╝ ╚═╝╚═╝
|
|
22
22
|
`
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
interface UpdateInfo {
|
|
25
|
+
currentVersion: string
|
|
26
|
+
latestVersion: string | null
|
|
27
|
+
updateAvailable: boolean
|
|
28
|
+
lastCheckedAt: number | null
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface WelcomeScreenProps {
|
|
32
|
+
updateInfo?: UpdateInfo | null
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export default function WelcomeScreen({ updateInfo }: WelcomeScreenProps = {}) {
|
|
36
|
+
const showUpdateBanner =
|
|
37
|
+
!!updateInfo && updateInfo.updateAvailable && !!updateInfo.latestVersion
|
|
38
|
+
|
|
25
39
|
return (
|
|
26
40
|
<Box
|
|
27
41
|
flexDirection="column"
|
|
@@ -39,6 +53,30 @@ export default function WelcomeScreen() {
|
|
|
39
53
|
<Text dimColor>v{pkg.version}</Text>
|
|
40
54
|
</Box>
|
|
41
55
|
|
|
56
|
+
{showUpdateBanner && updateInfo && (
|
|
57
|
+
<Box
|
|
58
|
+
marginTop={1}
|
|
59
|
+
paddingX={2}
|
|
60
|
+
borderStyle="round"
|
|
61
|
+
borderColor="yellow"
|
|
62
|
+
flexDirection="column"
|
|
63
|
+
alignItems="center"
|
|
64
|
+
>
|
|
65
|
+
<Text>
|
|
66
|
+
<Text color="yellow">📦 </Text>
|
|
67
|
+
<Text bold color="yellow">
|
|
68
|
+
Update available:
|
|
69
|
+
</Text>{" "}
|
|
70
|
+
<Text>{updateInfo.currentVersion}</Text>
|
|
71
|
+
<Text color="gray"> → </Text>
|
|
72
|
+
<Text color="cyan">{updateInfo.latestVersion}</Text>
|
|
73
|
+
</Text>
|
|
74
|
+
<Text color="gray">
|
|
75
|
+
Run <Text color="cyan">npm i -g @gxp-dev/tools</Text> to update
|
|
76
|
+
</Text>
|
|
77
|
+
</Box>
|
|
78
|
+
)}
|
|
79
|
+
|
|
42
80
|
<Box marginTop={1}>
|
|
43
81
|
<Text color="gray">
|
|
44
82
|
Interactive development environment for GxP plugins
|
package/bin/lib/tui/index.tsx
CHANGED
|
@@ -9,9 +9,17 @@ import { serviceManager } from "./services/index.js"
|
|
|
9
9
|
// Load .env from the current working directory (project directory)
|
|
10
10
|
dotenv.config({ path: path.join(process.cwd(), ".env") })
|
|
11
11
|
|
|
12
|
+
export interface UpdateInfo {
|
|
13
|
+
currentVersion: string
|
|
14
|
+
latestVersion: string | null
|
|
15
|
+
updateAvailable: boolean
|
|
16
|
+
lastCheckedAt: number | null
|
|
17
|
+
}
|
|
18
|
+
|
|
12
19
|
interface TUIOptions {
|
|
13
20
|
autoStart?: string[] // Commands to auto-start (e.g., ['dev', 'socket'])
|
|
14
21
|
args?: Record<string, unknown> // Command arguments
|
|
22
|
+
updateInfo?: UpdateInfo | null // Cached npm version-check result (for landing page banner)
|
|
15
23
|
}
|
|
16
24
|
|
|
17
25
|
export function startTUI(options: TUIOptions = {}) {
|
|
@@ -30,7 +38,11 @@ export function startTUI(options: TUIOptions = {}) {
|
|
|
30
38
|
}
|
|
31
39
|
|
|
32
40
|
const { waitUntilExit } = render(
|
|
33
|
-
<App
|
|
41
|
+
<App
|
|
42
|
+
autoStart={options.autoStart}
|
|
43
|
+
args={options.args}
|
|
44
|
+
updateInfo={options.updateInfo}
|
|
45
|
+
/>,
|
|
34
46
|
)
|
|
35
47
|
|
|
36
48
|
waitUntilExit().then(() => {
|
|
@@ -971,6 +971,14 @@ function buildInteractiveInitialPrompt(projectName, description, provider) {
|
|
|
971
971
|
? " You can also delegate to the `gxp-developer` subagent defined in `.claude/agents/gxp-developer.md`."
|
|
972
972
|
: ""
|
|
973
973
|
|
|
974
|
+
const mcpFixCommand =
|
|
975
|
+
{
|
|
976
|
+
claude: "claude mcp add gxp-api gxp-api-server",
|
|
977
|
+
codex: "codex mcp add gxp-api gxp-api-server",
|
|
978
|
+
gemini:
|
|
979
|
+
"add the `gxp-api` server to `~/.gemini/settings.json` under `mcpServers` with command `gxp-api-server`",
|
|
980
|
+
}[provider] || "see the provider's MCP docs"
|
|
981
|
+
|
|
974
982
|
return [
|
|
975
983
|
`I just ran \`gxdev init\` to scaffold a new GxP plugin called "${projectName}"${
|
|
976
984
|
description ? ` (${description})` : ""
|
|
@@ -978,8 +986,12 @@ function buildInteractiveInitialPrompt(projectName, description, provider) {
|
|
|
978
986
|
"",
|
|
979
987
|
`Start a new GxP plugin development session. First read \`${instructionFile}\` and \`app-instructions.md\` in this project — they describe the workflow, conventions, and the full set of tools available to you.${claudeAgentHint}`,
|
|
980
988
|
"",
|
|
989
|
+
"**Step 0 — smoke-test the `gxp-api` MCP server before asking me anything.** The server is defined in `.mcp.json` / `.gemini/settings.json` at the project root and provided by the `gxp-api-server` binary that ships with `@gxp-dev/tools` (already on your PATH — verify with `which gxp-api-server`). Call `api_list_tags` immediately:",
|
|
990
|
+
"- If it returns a list of tags → the MCP is live; load the tag list into memory so your first question to me can be grounded in the platform's actual resources (attendees, events, quizzes, posts, forms, etc.) rather than abstract categories.",
|
|
991
|
+
`- If \`api_list_tags\` (or any other \`api_*\` / \`config_*\` / \`docs_*\` tool) is not available, the MCP didn't register. Tell me so and suggest I run \`${mcpFixCommand}\`, then restart this session. Do not proceed without the MCP — every operationId, event, and dependency you plan with must come from it.`,
|
|
992
|
+
"",
|
|
981
993
|
"You have the `gxp-api` MCP server available with 29 tools across five families:",
|
|
982
|
-
"- **API spec discovery** — `search_api_endpoints`, `api_list_operation_ids`, `api_get_operation_parameters`, `api_find_endpoints_by_schema`, `api_generate_dependency`, `get_endpoint_details`.",
|
|
994
|
+
"- **API spec discovery** — `search_api_endpoints`, `api_list_operation_ids`, `api_get_operation_parameters`, `api_find_endpoints_by_schema`, `api_generate_dependency`, `get_endpoint_details`, `api_list_tags`.",
|
|
983
995
|
"- **WebSocket events** — `api_find_events_for_operation` (maps an operationId to the AsyncAPI events it triggers), `api_list_events`, `search_websocket_events`.",
|
|
984
996
|
"- **Config editing** — `config_add_card`, `config_add_field`, `config_list_field_types`, `config_get_field_schema`, `config_extract_strings`, `config_validate`, etc. Every mutation is linter-guarded against the schemas in `bin/lib/lint/schemas/`.",
|
|
985
997
|
"- **Docs search** — `docs_search`, `docs_get_page`, `docs_list_pages` (full-text search across docs.gxp.dev).",
|
|
@@ -1004,6 +1016,44 @@ function buildInteractiveInitialPrompt(projectName, description, provider) {
|
|
|
1004
1016
|
].join("\n")
|
|
1005
1017
|
}
|
|
1006
1018
|
|
|
1019
|
+
/**
|
|
1020
|
+
* Best-effort registration of the `gxp-api` MCP server with the selected
|
|
1021
|
+
* provider's CLI at user scope. The project-scoped `.mcp.json` /
|
|
1022
|
+
* `.gemini/settings.json` files already cover the common case, but a
|
|
1023
|
+
* user-scope registration is more forgiving — it works when the agent is
|
|
1024
|
+
* launched from a subdirectory, and it sidesteps Claude's first-run approval
|
|
1025
|
+
* prompt because the user explicitly opted in by picking an agent.
|
|
1026
|
+
*
|
|
1027
|
+
* Silent on failure: if the CLI doesn't support `mcp add` or the server is
|
|
1028
|
+
* already registered, we just fall back to the project config files.
|
|
1029
|
+
*
|
|
1030
|
+
* @param {string} provider - claude | codex | gemini
|
|
1031
|
+
* @returns {void}
|
|
1032
|
+
*/
|
|
1033
|
+
function registerMcpWithProviderCli(provider) {
|
|
1034
|
+
const commands = {
|
|
1035
|
+
claude: ["mcp", "add", "gxp-api", "gxp-api-server"],
|
|
1036
|
+
codex: ["mcp", "add", "gxp-api", "gxp-api-server"],
|
|
1037
|
+
}
|
|
1038
|
+
const args = commands[provider]
|
|
1039
|
+
if (!args) {
|
|
1040
|
+
// Gemini doesn't ship a stable `mcp add` subcommand; rely on the
|
|
1041
|
+
// shipped `.gemini/settings.json` instead.
|
|
1042
|
+
return
|
|
1043
|
+
}
|
|
1044
|
+
try {
|
|
1045
|
+
const result = require("child_process").spawnSync(provider, args, {
|
|
1046
|
+
stdio: "ignore",
|
|
1047
|
+
timeout: 5000,
|
|
1048
|
+
})
|
|
1049
|
+
if (result.status === 0) {
|
|
1050
|
+
console.log(` ✓ Registered gxp-api with ${provider} (user scope).`)
|
|
1051
|
+
}
|
|
1052
|
+
} catch {
|
|
1053
|
+
// Best-effort — ignore failures.
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1007
1057
|
/**
|
|
1008
1058
|
* Launch the selected AI CLI in interactive mode with an initial prompt.
|
|
1009
1059
|
* The user talks to the agent directly in the terminal; the agent is
|
|
@@ -1052,27 +1102,38 @@ function launchInteractiveAISession(
|
|
|
1052
1102
|
return
|
|
1053
1103
|
}
|
|
1054
1104
|
|
|
1105
|
+
// Register the MCP server with the provider's CLI at user scope as a
|
|
1106
|
+
// belt-and-suspenders measure on top of the project-scoped config files
|
|
1107
|
+
// that init already shipped.
|
|
1108
|
+
registerMcpWithProviderCli(provider)
|
|
1109
|
+
|
|
1055
1110
|
console.log("")
|
|
1056
1111
|
console.log("─".repeat(50))
|
|
1057
1112
|
console.log(`🚀 Launching ${provider} in interactive mode...`)
|
|
1058
1113
|
console.log("─".repeat(50))
|
|
1059
1114
|
console.log("")
|
|
1060
1115
|
console.log(
|
|
1061
|
-
" The
|
|
1116
|
+
" The `gxp-api` MCP server is configured in .mcp.json / .gemini/settings.json",
|
|
1117
|
+
)
|
|
1118
|
+
console.log(
|
|
1119
|
+
" at the project root (binary: gxp-api-server, installed with @gxp-dev/tools).",
|
|
1062
1120
|
)
|
|
1063
1121
|
console.log(
|
|
1064
|
-
"
|
|
1122
|
+
" The agent will smoke-test it first, then greet you and ask what you want",
|
|
1065
1123
|
)
|
|
1066
1124
|
console.log(
|
|
1067
|
-
" keep asking until it has enough
|
|
1125
|
+
" to build. Answer its questions — it will keep asking until it has enough",
|
|
1068
1126
|
)
|
|
1069
|
-
console.log("
|
|
1127
|
+
console.log(" detail, then plan, confirm, and implement.")
|
|
1070
1128
|
console.log("")
|
|
1071
1129
|
|
|
1130
|
+
// Do NOT pass shell: true here. The initial prompt contains backticks,
|
|
1131
|
+
// parentheses, and quotes; going through /bin/sh -c would require
|
|
1132
|
+
// shell-escaping every special character. Without shell: true, spawn
|
|
1133
|
+
// execs the binary directly and the argv is delivered as-is.
|
|
1072
1134
|
const child = spawn(command, args, {
|
|
1073
1135
|
cwd: projectPath,
|
|
1074
1136
|
stdio: "inherit",
|
|
1075
|
-
shell: true,
|
|
1076
1137
|
})
|
|
1077
1138
|
|
|
1078
1139
|
child.on("close", (code) => {
|
package/bin/lib/utils/index.js
CHANGED
|
@@ -10,6 +10,7 @@ const files = require("./files")
|
|
|
10
10
|
const prompts = require("./prompts")
|
|
11
11
|
const aiScaffold = require("./ai-scaffold")
|
|
12
12
|
const extractConfig = require("./extract-config")
|
|
13
|
+
const versionCheck = require("./version-check")
|
|
13
14
|
|
|
14
15
|
module.exports = {
|
|
15
16
|
...paths,
|
|
@@ -18,4 +19,5 @@ module.exports = {
|
|
|
18
19
|
...prompts,
|
|
19
20
|
...aiScaffold,
|
|
20
21
|
...extractConfig,
|
|
22
|
+
...versionCheck,
|
|
21
23
|
}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version Check
|
|
3
|
+
*
|
|
4
|
+
* Compares the installed gxdev version against the latest on npm.
|
|
5
|
+
*
|
|
6
|
+
* Design:
|
|
7
|
+
* - The npm registry is hit **at most once per 24 hours** per user. The latest
|
|
8
|
+
* version is cached in `~/.gxp-dev/version-check.json`.
|
|
9
|
+
* - All cache reads and the "is an update available?" check are synchronous so
|
|
10
|
+
* they can run from a `process.on("exit")` handler or a React render.
|
|
11
|
+
* - The actual network fetch is fire-and-forget (`maybeRunBackgroundCheck`).
|
|
12
|
+
* It never throws, never blocks, and never delays CLI exit.
|
|
13
|
+
* - Users can disable the check entirely with `GXP_NO_VERSION_CHECK=1`.
|
|
14
|
+
*
|
|
15
|
+
* Consequence: the first ever `gxdev` invocation only populates the cache — the
|
|
16
|
+
* update banner shows on the *next* run. That's an intentional tradeoff so the
|
|
17
|
+
* first run is never blocked on a slow/unreachable registry.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
const fs = require("fs")
|
|
21
|
+
const path = require("path")
|
|
22
|
+
const os = require("os")
|
|
23
|
+
const https = require("https")
|
|
24
|
+
|
|
25
|
+
const CACHE_DIR = path.join(os.homedir(), ".gxp-dev")
|
|
26
|
+
const CACHE_FILE = path.join(CACHE_DIR, "version-check.json")
|
|
27
|
+
const CHECK_TTL_MS = 24 * 60 * 60 * 1000 // 24 hours
|
|
28
|
+
const FETCH_TIMEOUT_MS = 3000
|
|
29
|
+
const PACKAGE_JSON_PATH = path.join(__dirname, "..", "..", "..", "package.json")
|
|
30
|
+
|
|
31
|
+
let cliReminderRegistered = false
|
|
32
|
+
|
|
33
|
+
function isDisabled() {
|
|
34
|
+
return process.env.GXP_NO_VERSION_CHECK === "1"
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function getPackageInfo() {
|
|
38
|
+
try {
|
|
39
|
+
const pkg = require(PACKAGE_JSON_PATH)
|
|
40
|
+
if (!pkg || !pkg.name || !pkg.version) {
|
|
41
|
+
return null
|
|
42
|
+
}
|
|
43
|
+
return { name: pkg.name, currentVersion: pkg.version }
|
|
44
|
+
} catch {
|
|
45
|
+
return null
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function readCache() {
|
|
50
|
+
try {
|
|
51
|
+
const raw = fs.readFileSync(CACHE_FILE, "utf-8")
|
|
52
|
+
const parsed = JSON.parse(raw)
|
|
53
|
+
if (!parsed || typeof parsed !== "object") {
|
|
54
|
+
return null
|
|
55
|
+
}
|
|
56
|
+
return parsed
|
|
57
|
+
} catch {
|
|
58
|
+
return null
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function writeCache(data) {
|
|
63
|
+
try {
|
|
64
|
+
if (!fs.existsSync(CACHE_DIR)) {
|
|
65
|
+
fs.mkdirSync(CACHE_DIR, { recursive: true })
|
|
66
|
+
}
|
|
67
|
+
fs.writeFileSync(CACHE_FILE, JSON.stringify(data, null, 2))
|
|
68
|
+
} catch {
|
|
69
|
+
// Cache failures are non-fatal — the CLI should still work.
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function cacheIsFresh(cache) {
|
|
74
|
+
if (!cache || !cache.lastCheckedAt) {
|
|
75
|
+
return false
|
|
76
|
+
}
|
|
77
|
+
return Date.now() - cache.lastCheckedAt < CHECK_TTL_MS
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Compare two semver-like strings.
|
|
82
|
+
* Returns 1 if a > b, -1 if a < b, 0 if equal. Strips pre-release suffixes.
|
|
83
|
+
*/
|
|
84
|
+
function compareVersions(a, b) {
|
|
85
|
+
const parse = (v) =>
|
|
86
|
+
String(v)
|
|
87
|
+
.split("-")[0]
|
|
88
|
+
.split(".")
|
|
89
|
+
.map((n) => parseInt(n, 10) || 0)
|
|
90
|
+
const pa = parse(a)
|
|
91
|
+
const pb = parse(b)
|
|
92
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
93
|
+
const ai = pa[i] || 0
|
|
94
|
+
const bi = pb[i] || 0
|
|
95
|
+
if (ai > bi) {
|
|
96
|
+
return 1
|
|
97
|
+
}
|
|
98
|
+
if (ai < bi) {
|
|
99
|
+
return -1
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return 0
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function fetchLatestVersion(packageName) {
|
|
106
|
+
return new Promise((resolve, reject) => {
|
|
107
|
+
const url = `https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`
|
|
108
|
+
const req = https.get(
|
|
109
|
+
url,
|
|
110
|
+
{ timeout: FETCH_TIMEOUT_MS, headers: { Accept: "application/json" } },
|
|
111
|
+
(res) => {
|
|
112
|
+
if (res.statusCode !== 200) {
|
|
113
|
+
res.resume()
|
|
114
|
+
reject(new Error(`HTTP ${res.statusCode}`))
|
|
115
|
+
return
|
|
116
|
+
}
|
|
117
|
+
let data = ""
|
|
118
|
+
res.setEncoding("utf8")
|
|
119
|
+
res.on("data", (chunk) => {
|
|
120
|
+
data += chunk
|
|
121
|
+
})
|
|
122
|
+
res.on("end", () => {
|
|
123
|
+
try {
|
|
124
|
+
const body = JSON.parse(data)
|
|
125
|
+
if (body && typeof body.version === "string") {
|
|
126
|
+
resolve(body.version)
|
|
127
|
+
} else {
|
|
128
|
+
reject(new Error("Missing version in registry response"))
|
|
129
|
+
}
|
|
130
|
+
} catch (err) {
|
|
131
|
+
reject(err)
|
|
132
|
+
}
|
|
133
|
+
})
|
|
134
|
+
},
|
|
135
|
+
)
|
|
136
|
+
req.on("error", reject)
|
|
137
|
+
req.on("timeout", () => {
|
|
138
|
+
req.destroy(new Error("timeout"))
|
|
139
|
+
})
|
|
140
|
+
})
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Synchronously derive update status from the cache + installed package.json.
|
|
145
|
+
* Returns null if version info can't be determined.
|
|
146
|
+
*
|
|
147
|
+
* Shape: { currentVersion, latestVersion, updateAvailable, lastCheckedAt }
|
|
148
|
+
*/
|
|
149
|
+
function getCachedUpdateInfo() {
|
|
150
|
+
if (isDisabled()) {
|
|
151
|
+
return null
|
|
152
|
+
}
|
|
153
|
+
const pkg = getPackageInfo()
|
|
154
|
+
if (!pkg) {
|
|
155
|
+
return null
|
|
156
|
+
}
|
|
157
|
+
const cache = readCache()
|
|
158
|
+
if (!cache || !cache.latestVersion) {
|
|
159
|
+
return {
|
|
160
|
+
currentVersion: pkg.currentVersion,
|
|
161
|
+
latestVersion: null,
|
|
162
|
+
updateAvailable: false,
|
|
163
|
+
lastCheckedAt: cache && cache.lastCheckedAt ? cache.lastCheckedAt : null,
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
const updateAvailable =
|
|
167
|
+
compareVersions(cache.latestVersion, pkg.currentVersion) > 0
|
|
168
|
+
return {
|
|
169
|
+
currentVersion: pkg.currentVersion,
|
|
170
|
+
latestVersion: cache.latestVersion,
|
|
171
|
+
updateAvailable,
|
|
172
|
+
lastCheckedAt: cache.lastCheckedAt,
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Kick off a non-blocking registry check if the cache is stale. Safe to call
|
|
178
|
+
* on every gxdev invocation — throttled by the 24h TTL and silent on any
|
|
179
|
+
* failure. The process holds the socket open briefly while the request runs,
|
|
180
|
+
* but `.unref()` means it won't keep the process alive on its own.
|
|
181
|
+
*/
|
|
182
|
+
function maybeRunBackgroundCheck() {
|
|
183
|
+
if (isDisabled()) {
|
|
184
|
+
return
|
|
185
|
+
}
|
|
186
|
+
const pkg = getPackageInfo()
|
|
187
|
+
if (!pkg) {
|
|
188
|
+
return
|
|
189
|
+
}
|
|
190
|
+
const cache = readCache()
|
|
191
|
+
if (cacheIsFresh(cache)) {
|
|
192
|
+
return
|
|
193
|
+
}
|
|
194
|
+
const fetchPromise = fetchLatestVersion(pkg.name)
|
|
195
|
+
fetchPromise
|
|
196
|
+
.then((latestVersion) => {
|
|
197
|
+
writeCache({
|
|
198
|
+
packageName: pkg.name,
|
|
199
|
+
latestVersion,
|
|
200
|
+
lastCheckedAt: Date.now(),
|
|
201
|
+
})
|
|
202
|
+
})
|
|
203
|
+
.catch(() => {
|
|
204
|
+
// Swallow errors — we'll retry next run.
|
|
205
|
+
})
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function formatCliReminder(info) {
|
|
209
|
+
if (!info || !info.updateAvailable || !info.latestVersion) {
|
|
210
|
+
return ""
|
|
211
|
+
}
|
|
212
|
+
const yellow = (s) => `\x1b[33m${s}\x1b[0m`
|
|
213
|
+
const cyan = (s) => `\x1b[36m${s}\x1b[0m`
|
|
214
|
+
const bold = (s) => `\x1b[1m${s}\x1b[0m`
|
|
215
|
+
return [
|
|
216
|
+
"",
|
|
217
|
+
yellow("────────────────────────────────────────────────────────"),
|
|
218
|
+
`${yellow("📦")} ${bold("gxdev update available:")} ${info.currentVersion} → ${cyan(info.latestVersion)}`,
|
|
219
|
+
` Update with ${cyan("npm i -g @gxp-dev/tools")}`,
|
|
220
|
+
yellow("────────────────────────────────────────────────────────"),
|
|
221
|
+
].join("\n")
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Install a process.on("exit") handler that prints a one-time reminder if the
|
|
226
|
+
* cached info says an update is available. Safe to call multiple times — only
|
|
227
|
+
* the first call registers. Meant for the plain-CLI path; the TUI renders its
|
|
228
|
+
* banner inline instead.
|
|
229
|
+
*/
|
|
230
|
+
function registerCliExitReminder() {
|
|
231
|
+
if (isDisabled() || cliReminderRegistered) {
|
|
232
|
+
return
|
|
233
|
+
}
|
|
234
|
+
cliReminderRegistered = true
|
|
235
|
+
process.on("exit", () => {
|
|
236
|
+
try {
|
|
237
|
+
const info = getCachedUpdateInfo()
|
|
238
|
+
if (info && info.updateAvailable) {
|
|
239
|
+
// Emit to stderr so it never pollutes stdout pipelines
|
|
240
|
+
// (e.g. `gxdev lint --json | jq ...`).
|
|
241
|
+
process.stderr.write(formatCliReminder(info) + "\n")
|
|
242
|
+
}
|
|
243
|
+
} catch {
|
|
244
|
+
// Never crash during exit.
|
|
245
|
+
}
|
|
246
|
+
})
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
module.exports = {
|
|
250
|
+
getCachedUpdateInfo,
|
|
251
|
+
maybeRunBackgroundCheck,
|
|
252
|
+
registerCliExitReminder,
|
|
253
|
+
formatCliReminder,
|
|
254
|
+
compareVersions,
|
|
255
|
+
}
|
package/dist/tui/App.d.ts
CHANGED
|
@@ -5,9 +5,16 @@ export interface Service {
|
|
|
5
5
|
status: ServiceStatus;
|
|
6
6
|
logs: string[];
|
|
7
7
|
}
|
|
8
|
+
export interface UpdateInfo {
|
|
9
|
+
currentVersion: string;
|
|
10
|
+
latestVersion: string | null;
|
|
11
|
+
updateAvailable: boolean;
|
|
12
|
+
lastCheckedAt: number | null;
|
|
13
|
+
}
|
|
8
14
|
export interface AppProps {
|
|
9
15
|
autoStart?: string[];
|
|
10
16
|
args?: Record<string, unknown>;
|
|
17
|
+
updateInfo?: UpdateInfo | null;
|
|
11
18
|
}
|
|
12
|
-
export default function App({ autoStart, args }: AppProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export default function App({ autoStart, args, updateInfo }: AppProps): import("react/jsx-runtime").JSX.Element;
|
|
13
20
|
//# sourceMappingURL=App.d.ts.map
|
package/dist/tui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../bin/lib/tui/App.tsx"],"names":[],"mappings":"AAQA,OAAO,EAUN,aAAa,EAMb,MAAM,qBAAqB,CAAA;AAE5B,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,aAAa,CAAA;IACrB,IAAI,EAAE,MAAM,EAAE,CAAA;CACd;AAcD,MAAM,WAAW,QAAQ;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../bin/lib/tui/App.tsx"],"names":[],"mappings":"AAQA,OAAO,EAUN,aAAa,EAMb,MAAM,qBAAqB,CAAA;AAE5B,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,aAAa,CAAA;IACrB,IAAI,EAAE,MAAM,EAAE,CAAA;CACd;AAcD,MAAM,WAAW,UAAU;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,WAAW,QAAQ;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,QAAQ,2CA2wBpE"}
|
package/dist/tui/App.js
CHANGED
|
@@ -8,7 +8,7 @@ import LogPanel from "./components/LogPanel.js";
|
|
|
8
8
|
import CommandInput from "./components/CommandInput.js";
|
|
9
9
|
import AIPanel from "./components/AIPanel.js";
|
|
10
10
|
import { serviceManager, startVite, stopVite, startSocket, stopSocket, startExtension, stopExtension, listSocketEvents, sendSocketEvent, aiService, getAvailableProviders, getProviderStatus, } from "./services/index.js";
|
|
11
|
-
export default function App({ autoStart, args }) {
|
|
11
|
+
export default function App({ autoStart, args, updateInfo }) {
|
|
12
12
|
const { exit } = useApp();
|
|
13
13
|
const { stdout } = useStdout();
|
|
14
14
|
const [showAIPanel, setShowAIPanel] = useState(false);
|
|
@@ -617,7 +617,7 @@ Keyboard shortcuts:
|
|
|
617
617
|
const fixedRows = 10;
|
|
618
618
|
const availableForLog = terminalHeight - fixedRows - suggestionRows;
|
|
619
619
|
const logPanelHeight = Math.max(3, availableForLog); // Minimum 3 rows for log panel
|
|
620
|
-
return (_jsxs(Box, { flexDirection: "column", height: terminalHeight, children: [_jsx(Header, { projectName: process.cwd().split("/").pop() || "gxdev" }), services.length > 0 && (_jsx(TabBar, { services: services, activeTab: activeTab, onTabChange: setActiveTab })), _jsx(Box, { height: logPanelHeight, flexDirection: "column", borderStyle: "single", borderColor: "gray", overflow: "hidden", children: currentService ? (_jsx(LogPanel, { logs: currentService.logs, maxHeight: logPanelHeight })) : (_jsx(WelcomeScreen, {})) }), _jsx(CommandInput, { onSubmit: handleCommand, activeService: currentService
|
|
620
|
+
return (_jsxs(Box, { flexDirection: "column", height: terminalHeight, children: [_jsx(Header, { projectName: process.cwd().split("/").pop() || "gxdev" }), services.length > 0 && (_jsx(TabBar, { services: services, activeTab: activeTab, onTabChange: setActiveTab })), _jsx(Box, { height: logPanelHeight, flexDirection: "column", borderStyle: "single", borderColor: "gray", overflow: "hidden", children: currentService ? (_jsx(LogPanel, { logs: currentService.logs, maxHeight: logPanelHeight })) : (_jsx(WelcomeScreen, { updateInfo: updateInfo })) }), _jsx(CommandInput, { onSubmit: handleCommand, activeService: currentService
|
|
621
621
|
? {
|
|
622
622
|
id: currentService.id,
|
|
623
623
|
name: currentService.name,
|
package/dist/tui/App.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../bin/lib/tui/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../bin/lib/tui/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
interface UpdateInfo {
|
|
2
|
+
currentVersion: string;
|
|
3
|
+
latestVersion: string | null;
|
|
4
|
+
updateAvailable: boolean;
|
|
5
|
+
lastCheckedAt: number | null;
|
|
6
|
+
}
|
|
7
|
+
interface WelcomeScreenProps {
|
|
8
|
+
updateInfo?: UpdateInfo | null;
|
|
9
|
+
}
|
|
10
|
+
export default function WelcomeScreen({ updateInfo }?: WelcomeScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
2
12
|
//# sourceMappingURL=WelcomeScreen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WelcomeScreen.d.ts","sourceRoot":"","sources":["../../../bin/lib/tui/components/WelcomeScreen.tsx"],"names":[],"mappings":"AAuBA,MAAM,CAAC,OAAO,UAAU,aAAa,
|
|
1
|
+
{"version":3,"file":"WelcomeScreen.d.ts","sourceRoot":"","sources":["../../../bin/lib/tui/components/WelcomeScreen.tsx"],"names":[],"mappings":"AAuBA,UAAU,UAAU;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,UAAU,kBAAkB;IAC3B,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,UAAU,EAAE,GAAE,kBAAuB,2CAsJ5E"}
|
|
@@ -17,7 +17,8 @@ const LOGO = `
|
|
|
17
17
|
╚██████╔╝██╔╝ ██╗██║
|
|
18
18
|
╚═════╝ ╚═╝ ╚═╝╚═╝
|
|
19
19
|
`;
|
|
20
|
-
export default function WelcomeScreen() {
|
|
21
|
-
|
|
20
|
+
export default function WelcomeScreen({ updateInfo } = {}) {
|
|
21
|
+
const showUpdateBanner = !!updateInfo && updateInfo.updateAvailable && !!updateInfo.latestVersion;
|
|
22
|
+
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", flexGrow: 1, padding: 1, children: [_jsx(Text, { color: "blue", children: LOGO }), _jsxs(Box, { marginTop: 1, flexDirection: "column", alignItems: "center", children: [_jsx(Text, { bold: true, color: "white", children: "GxP DevStudio" }), _jsxs(Text, { dimColor: true, children: ["v", pkg.version] })] }), showUpdateBanner && updateInfo && (_jsxs(Box, { marginTop: 1, paddingX: 2, borderStyle: "round", borderColor: "yellow", flexDirection: "column", alignItems: "center", children: [_jsxs(Text, { children: [_jsx(Text, { color: "yellow", children: "\uD83D\uDCE6 " }), _jsx(Text, { bold: true, color: "yellow", children: "Update available:" }), " ", _jsx(Text, { children: updateInfo.currentVersion }), _jsx(Text, { color: "gray", children: " \u2192 " }), _jsx(Text, { color: "cyan", children: updateInfo.latestVersion })] }), _jsxs(Text, { color: "gray", children: ["Run ", _jsx(Text, { color: "cyan", children: "npm i -g @gxp-dev/tools" }), " to update"] })] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Interactive development environment for GxP plugins" }) }), _jsxs(Box, { marginTop: 2, flexDirection: "row", justifyContent: "center", children: [_jsxs(Box, { flexDirection: "column", marginRight: 4, children: [_jsx(Text, { color: "cyan", bold: true, children: "Quick Start" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { children: [" ", _jsx(Text, { color: "yellow", children: "/dev" }), " Start Vite + Socket.IO"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "yellow", children: "/dev --no-socket" }), " Start Vite only (no Socket)"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "yellow", children: "/dev --with-mock" }), " Start with Mock API"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "yellow", children: "/socket" }), " Start Socket.IO server"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "yellow", children: "/ext chrome" }), " Launch Chrome extension"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "yellow", children: "/help" }), " Show all commands"] })] })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 4, children: [_jsx(Text, { color: "cyan", bold: true, children: "Keyboard Shortcuts" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { children: [" ", _jsx(Text, { color: "green", children: "Tab" }), " Cycle through tabs"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "green", children: "Left/Right" }), " Switch tabs"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "green", children: "Ctrl+K" }), " Stop current service"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "green", children: "Ctrl+L" }), " Clear current log"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "green", children: "Ctrl+C" }), " Exit application"] })] })] })] }), _jsxs(Box, { marginTop: 2, flexDirection: "column", alignItems: "center", children: [_jsx(Text, { color: "cyan", bold: true, children: "Socket Events" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", alignItems: "center", children: [_jsxs(Text, { color: "gray", children: ["Use ", _jsx(Text, { color: "yellow", children: "/socket list" }), " to see available events"] }), _jsxs(Text, { color: "gray", children: ["Use ", _jsx(Text, { color: "yellow", children: "/socket send EventName" }), " to simulate events"] })] })] }), _jsxs(Box, { marginTop: 2, flexDirection: "column", alignItems: "center", children: [_jsx(Text, { color: "cyan", bold: true, children: "Browser Extensions" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", alignItems: "center", children: [_jsx(Text, { color: "gray", children: "Test your plugin on live GxP pages with the browser extension" }), _jsx(Text, { color: "gray", children: "Open DevTools and use the \"GxP Inspector\" panel to select components" })] })] }), _jsx(Box, { marginTop: 2, children: _jsx(Text, { dimColor: true, children: "Type a command below to get started..." }) })] }));
|
|
22
23
|
}
|
|
23
24
|
//# sourceMappingURL=WelcomeScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WelcomeScreen.js","sourceRoot":"","sources":["../../../bin/lib/tui/components/WelcomeScreen.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAEpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,uDAAuD;AACvD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;AACjE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE5B,MAAM,IAAI,GAAG;;;;;;;CAOZ,CAAA;
|
|
1
|
+
{"version":3,"file":"WelcomeScreen.js","sourceRoot":"","sources":["../../../bin/lib/tui/components/WelcomeScreen.tsx"],"names":[],"mappings":"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"}
|
package/dist/tui/index.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
export interface UpdateInfo {
|
|
3
|
+
currentVersion: string;
|
|
4
|
+
latestVersion: string | null;
|
|
5
|
+
updateAvailable: boolean;
|
|
6
|
+
lastCheckedAt: number | null;
|
|
7
|
+
}
|
|
2
8
|
interface TUIOptions {
|
|
3
9
|
autoStart?: string[];
|
|
4
10
|
args?: Record<string, unknown>;
|
|
11
|
+
updateInfo?: UpdateInfo | null;
|
|
5
12
|
}
|
|
6
13
|
export declare function startTUI(options?: TUIOptions): void;
|
|
7
14
|
export default startTUI;
|
package/dist/tui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../bin/lib/tui/index.tsx"],"names":[],"mappings":";AAWA,UAAU,UAAU;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,wBAAgB,QAAQ,CAAC,OAAO,GAAE,UAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../bin/lib/tui/index.tsx"],"names":[],"mappings":";AAWA,MAAM,WAAW,UAAU;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,UAAU,UAAU;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CAC9B;AAED,wBAAgB,QAAQ,CAAC,OAAO,GAAE,UAAe,QA4BhD;AAUD,eAAe,QAAQ,CAAA"}
|
package/dist/tui/index.js
CHANGED
|
@@ -20,7 +20,7 @@ export function startTUI(options = {}) {
|
|
|
20
20
|
if (!stdinIsTTY) {
|
|
21
21
|
throw new Error("NO_TTY");
|
|
22
22
|
}
|
|
23
|
-
const { waitUntilExit } = render(_jsx(App, { autoStart: options.autoStart, args: options.args }));
|
|
23
|
+
const { waitUntilExit } = render(_jsx(App, { autoStart: options.autoStart, args: options.args, updateInfo: options.updateInfo }));
|
|
24
24
|
waitUntilExit().then(() => {
|
|
25
25
|
// Ensure all services are stopped before exiting
|
|
26
26
|
serviceManager.forceStopAll();
|
package/dist/tui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../bin/lib/tui/index.tsx"],"names":[],"mappings":";;AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,mEAAmE;AACnE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../bin/lib/tui/index.tsx"],"names":[],"mappings":";;AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,mEAAmE;AACnE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;AAezD,MAAM,UAAU,QAAQ,CAAC,UAAsB,EAAE;IAChD,qEAAqE;IACrE,sBAAsB;IACtB,+BAA+B;IAC/B,qCAAqC;IACrC,4BAA4B;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAA;IAEvC,qEAAqE;IACrE,gEAAgE;IAChE,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC/B,KAAC,GAAG,IACH,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,UAAU,EAAE,OAAO,CAAC,UAAU,GAC7B,CACF,CAAA;IAED,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QACzB,iDAAiD;QACjD,cAAc,CAAC,YAAY,EAAE,CAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;AACH,CAAC;AAED,kCAAkC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,MAAM,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACtE,IAAI,MAAM,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAA;AACX,CAAC;AAED,eAAe,QAAQ,CAAA"}
|
package/package.json
CHANGED
|
@@ -28,6 +28,8 @@ Ask clarifying questions. Don't guess — a single clarification prevents a larg
|
|
|
28
28
|
|
|
29
29
|
The `gxp-api` MCP server is your source of truth for the platform. Never invent endpoints or event names.
|
|
30
30
|
|
|
31
|
+
**Before anything else, confirm the MCP is live** — call `api_list_tags`. The server is configured in `.mcp.json` at the project root and provided by the `gxp-api-server` binary that ships with `@gxp-dev/tools` (on PATH; verify with `which gxp-api-server`). If the `api_*` / `config_*` / `docs_*` tools aren't available, tell the user to run `claude mcp add gxp-api gxp-api-server` and restart the session. Do not proceed without it.
|
|
32
|
+
|
|
31
33
|
**API discovery:**
|
|
32
34
|
|
|
33
35
|
- `api_list_tags` — enumerate tags so you can browse.
|
package/template/AGENTS.md
CHANGED
|
@@ -21,6 +21,8 @@ Ask clarifying questions instead of guessing. A 30-second question beats a 30-mi
|
|
|
21
21
|
|
|
22
22
|
Use the `gxp-api` MCP server to ground the implementation in the real platform — never invent endpoints or event names.
|
|
23
23
|
|
|
24
|
+
**Verify the MCP is live before planning anything** by calling `api_list_tags`. The server is defined in `.mcp.json` at the project root and provided by the `gxp-api-server` binary that ships with `@gxp-dev/tools` (on PATH — check with `which gxp-api-server`). If the `api_*` / `config_*` / `docs_*` tools aren't available, tell the user to run `claude mcp add gxp-api gxp-api-server` (or `codex mcp add …` / add it to `~/.gemini/settings.json`) and restart the session. Do not proceed without the MCP.
|
|
25
|
+
|
|
24
26
|
- **Find endpoints** — `api_list_tags`, `api_list_operation_ids` (optionally scoped by tag), `search_api_endpoints` (keyword).
|
|
25
27
|
- **Inspect a specific endpoint** — `api_get_operation_parameters`, `get_endpoint_details`.
|
|
26
28
|
- **Find endpoints by payload shape** — `api_find_endpoints_by_schema` (search by request/response field names).
|
package/template/GEMINI.md
CHANGED
|
@@ -18,6 +18,8 @@ Before writing anything, clarify with the client:
|
|
|
18
18
|
|
|
19
19
|
Ground the implementation in real platform endpoints and events. Do not invent API paths or event names.
|
|
20
20
|
|
|
21
|
+
**Verify the MCP is live first** — call `api_list_tags`. The server is defined in `.gemini/settings.json` at the project root and provided by the `gxp-api-server` binary that ships with `@gxp-dev/tools` (on PATH). If the tools aren't available, tell the user to add `gxp-api` to `~/.gemini/settings.json` under `mcpServers` with command `gxp-api-server`, then restart the session.
|
|
22
|
+
|
|
21
23
|
- Endpoints — `api_list_tags`, `api_list_operation_ids`, `search_api_endpoints`, `api_get_operation_parameters`, `get_endpoint_details`.
|
|
22
24
|
- Find by payload shape — `api_find_endpoints_by_schema`.
|
|
23
25
|
- WebSocket events — `api_find_events_for_operation` (maps operationId → events via `x-triggered-by`), `api_list_events`, `search_websocket_events`, `get_asyncapi_spec`. Run for every planned operationId so you subscribe instead of polling.
|