gipity 1.0.347 → 1.0.356
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 +1 -1
- package/dist/adopt-cwd.js +1 -0
- package/dist/commands/add.js +136 -9
- package/dist/commands/logs.js +79 -0
- package/dist/commands/page-eval.js +31 -0
- package/dist/commands/page-inspect.js +91 -62
- package/dist/commands/page-screenshot.js +1 -1
- package/dist/commands/page.js +18 -0
- package/dist/commands/project.js +1 -0
- package/dist/commands/workflow.js +63 -16
- package/dist/flag-aliases.js +41 -2
- package/dist/index.js +3 -4
- package/dist/knowledge.js +5 -4
- package/dist/project-setup.js +24 -0
- package/dist/setup.js +1 -1
- package/dist/template-vars.js +156 -0
- package/package.json +7 -6
- package/dist/__tests__/adopt-cwd.test.d.ts +0 -1
- package/dist/__tests__/adopt-cwd.test.js +0 -176
- package/dist/__tests__/adopt-cwd.test.js.map +0 -1
- package/dist/__tests__/capture-transcript.test.d.ts +0 -1
- package/dist/__tests__/capture-transcript.test.js +0 -92
- package/dist/__tests__/capture-transcript.test.js.map +0 -1
- package/dist/__tests__/claude-noninteractive.test.d.ts +0 -1
- package/dist/__tests__/claude-noninteractive.test.js +0 -92
- package/dist/__tests__/claude-noninteractive.test.js.map +0 -1
- package/dist/__tests__/claude-trust.test.d.ts +0 -1
- package/dist/__tests__/claude-trust.test.js +0 -71
- package/dist/__tests__/claude-trust.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-add.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-add.test.js +0 -45
- package/dist/__tests__/cli-cmd-add.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-agent.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-agent.test.js +0 -76
- package/dist/__tests__/cli-cmd-agent.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-approval.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-approval.test.js +0 -47
- package/dist/__tests__/cli-cmd-approval.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-audit.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-audit.test.js +0 -33
- package/dist/__tests__/cli-cmd-audit.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-chat.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-chat.test.js +0 -94
- package/dist/__tests__/cli-cmd-chat.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-credits.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-credits.test.js +0 -66
- package/dist/__tests__/cli-cmd-credits.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-db.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-db.test.js +0 -95
- package/dist/__tests__/cli-cmd-db.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-deploy.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-deploy.test.js +0 -53
- package/dist/__tests__/cli-cmd-deploy.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-domain.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-domain.test.js +0 -73
- package/dist/__tests__/cli-cmd-domain.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-email.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-email.test.js +0 -31
- package/dist/__tests__/cli-cmd-email.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-file.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-file.test.js +0 -86
- package/dist/__tests__/cli-cmd-file.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-fn.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-fn.test.js +0 -50
- package/dist/__tests__/cli-cmd-fn.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-generate.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-generate.test.js +0 -46
- package/dist/__tests__/cli-cmd-generate.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-gmail.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-gmail.test.js +0 -49
- package/dist/__tests__/cli-cmd-gmail.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-info.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-info.test.js +0 -52
- package/dist/__tests__/cli-cmd-info.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-init.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-init.test.js +0 -76
- package/dist/__tests__/cli-cmd-init.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-job.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-job.test.js +0 -204
- package/dist/__tests__/cli-cmd-job.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-location.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-location.test.js +0 -58
- package/dist/__tests__/cli-cmd-location.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-login.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-login.test.js +0 -41
- package/dist/__tests__/cli-cmd-login.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-logout.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-logout.test.js +0 -20
- package/dist/__tests__/cli-cmd-logout.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-logs.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-logs.test.js +0 -40
- package/dist/__tests__/cli-cmd-logs.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-memory.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-memory.test.js +0 -58
- package/dist/__tests__/cli-cmd-memory.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-page-inspect.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-page-inspect.test.js +0 -47
- package/dist/__tests__/cli-cmd-page-inspect.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-plan.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-plan.test.js +0 -81
- package/dist/__tests__/cli-cmd-plan.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-project.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-project.test.js +0 -61
- package/dist/__tests__/cli-cmd-project.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-rbac.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-rbac.test.js +0 -39
- package/dist/__tests__/cli-cmd-rbac.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-realtime.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-realtime.test.js +0 -51
- package/dist/__tests__/cli-cmd-realtime.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-records.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-records.test.js +0 -67
- package/dist/__tests__/cli-cmd-records.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-relay.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-relay.test.js +0 -100
- package/dist/__tests__/cli-cmd-relay.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-sandbox.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-sandbox.test.js +0 -46
- package/dist/__tests__/cli-cmd-sandbox.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-scaffold.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-scaffold.test.js +0 -30
- package/dist/__tests__/cli-cmd-scaffold.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-skill.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-skill.test.js +0 -40
- package/dist/__tests__/cli-cmd-skill.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-test.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-test.test.js +0 -58
- package/dist/__tests__/cli-cmd-test.test.js.map +0 -1
- package/dist/__tests__/cli-cmd-workflow.test.d.ts +0 -1
- package/dist/__tests__/cli-cmd-workflow.test.js +0 -84
- package/dist/__tests__/cli-cmd-workflow.test.js.map +0 -1
- package/dist/__tests__/cli-e2e-live.test.d.ts +0 -1
- package/dist/__tests__/cli-e2e-live.test.js +0 -144
- package/dist/__tests__/cli-e2e-live.test.js.map +0 -1
- package/dist/__tests__/cli-smoke.test.d.ts +0 -1
- package/dist/__tests__/cli-smoke.test.js +0 -69
- package/dist/__tests__/cli-smoke.test.js.map +0 -1
- package/dist/__tests__/config.test.d.ts +0 -1
- package/dist/__tests__/config.test.js +0 -95
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/flag-aliases.test.d.ts +0 -1
- package/dist/__tests__/flag-aliases.test.js +0 -33
- package/dist/__tests__/flag-aliases.test.js.map +0 -1
- package/dist/__tests__/helpers/mock-server.d.ts +0 -52
- package/dist/__tests__/helpers/mock-server.js +0 -86
- package/dist/__tests__/helpers/mock-server.js.map +0 -1
- package/dist/__tests__/helpers/spawn-cli.d.ts +0 -30
- package/dist/__tests__/helpers/spawn-cli.js +0 -72
- package/dist/__tests__/helpers/spawn-cli.js.map +0 -1
- package/dist/__tests__/helpers/test-home.d.ts +0 -22
- package/dist/__tests__/helpers/test-home.js +0 -35
- package/dist/__tests__/helpers/test-home.js.map +0 -1
- package/dist/__tests__/hook-capture.test.d.ts +0 -1
- package/dist/__tests__/hook-capture.test.js +0 -65
- package/dist/__tests__/hook-capture.test.js.map +0 -1
- package/dist/__tests__/prompts.test.d.ts +0 -1
- package/dist/__tests__/prompts.test.js +0 -129
- package/dist/__tests__/prompts.test.js.map +0 -1
- package/dist/__tests__/push-cas.test.d.ts +0 -1
- package/dist/__tests__/push-cas.test.js +0 -133
- package/dist/__tests__/push-cas.test.js.map +0 -1
- package/dist/__tests__/relay-bridge-abort.test.d.ts +0 -1
- package/dist/__tests__/relay-bridge-abort.test.js +0 -65
- package/dist/__tests__/relay-bridge-abort.test.js.map +0 -1
- package/dist/__tests__/relay-daemon.test.d.ts +0 -1
- package/dist/__tests__/relay-daemon.test.js +0 -232
- package/dist/__tests__/relay-daemon.test.js.map +0 -1
- package/dist/__tests__/relay-ingest-contract.test.d.ts +0 -1
- package/dist/__tests__/relay-ingest-contract.test.js +0 -76
- package/dist/__tests__/relay-ingest-contract.test.js.map +0 -1
- package/dist/__tests__/relay-installers.test.d.ts +0 -1
- package/dist/__tests__/relay-installers.test.js +0 -95
- package/dist/__tests__/relay-installers.test.js.map +0 -1
- package/dist/__tests__/relay-machine-id.test.d.ts +0 -1
- package/dist/__tests__/relay-machine-id.test.js +0 -41
- package/dist/__tests__/relay-machine-id.test.js.map +0 -1
- package/dist/__tests__/relay-pair.test.d.ts +0 -1
- package/dist/__tests__/relay-pair.test.js.map +0 -1
- package/dist/__tests__/relay-redact.test.d.ts +0 -1
- package/dist/__tests__/relay-redact.test.js +0 -78
- package/dist/__tests__/relay-redact.test.js.map +0 -1
- package/dist/__tests__/relay-state.test.d.ts +0 -1
- package/dist/__tests__/relay-state.test.js +0 -85
- package/dist/__tests__/relay-state.test.js.map +0 -1
- package/dist/__tests__/setup-skills-block.test.d.ts +0 -1
- package/dist/__tests__/setup-skills-block.test.js +0 -65
- package/dist/__tests__/setup-skills-block.test.js.map +0 -1
- package/dist/__tests__/stream-json.test.d.ts +0 -1
- package/dist/__tests__/stream-json.test.js +0 -186
- package/dist/__tests__/stream-json.test.js.map +0 -1
- package/dist/__tests__/sync-apply.test.d.ts +0 -1
- package/dist/__tests__/sync-apply.test.js +0 -457
- package/dist/__tests__/sync-apply.test.js.map +0 -1
- package/dist/__tests__/sync-lock.test.d.ts +0 -1
- package/dist/__tests__/sync-lock.test.js +0 -105
- package/dist/__tests__/sync-lock.test.js.map +0 -1
- package/dist/__tests__/sync.test.d.ts +0 -1
- package/dist/__tests__/sync.test.js +0 -160
- package/dist/__tests__/sync.test.js.map +0 -1
- package/dist/__tests__/updater.test.d.ts +0 -1
- package/dist/__tests__/updater.test.js +0 -95
- package/dist/__tests__/updater.test.js.map +0 -1
- package/dist/__tests__/upload.test.d.ts +0 -1
- package/dist/__tests__/upload.test.js +0 -92
- package/dist/__tests__/upload.test.js.map +0 -1
- package/dist/__tests__/utils.test.d.ts +0 -1
- package/dist/__tests__/utils.test.js +0 -69
- package/dist/__tests__/utils.test.js.map +0 -1
- package/dist/adopt-cwd.d.ts +0 -69
- package/dist/adopt-cwd.js.map +0 -1
- package/dist/api.d.ts +0 -41
- package/dist/api.js.map +0 -1
- package/dist/auth.d.ts +0 -17
- package/dist/auth.js.map +0 -1
- package/dist/banner.d.ts +0 -6
- package/dist/banner.js.map +0 -1
- package/dist/capture/sources/claude-code.d.ts +0 -78
- package/dist/capture/sources/claude-code.js.map +0 -1
- package/dist/coding-guidelines.d.ts +0 -9
- package/dist/coding-guidelines.js.map +0 -1
- package/dist/colors.d.ts +0 -22
- package/dist/colors.js.map +0 -1
- package/dist/commands/add.d.ts +0 -2
- package/dist/commands/add.js.map +0 -1
- package/dist/commands/agent.d.ts +0 -2
- package/dist/commands/agent.js.map +0 -1
- package/dist/commands/api.d.ts +0 -1
- package/dist/commands/api.js.map +0 -1
- package/dist/commands/approval.d.ts +0 -2
- package/dist/commands/approval.js.map +0 -1
- package/dist/commands/audit.d.ts +0 -2
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/browser.d.ts +0 -2
- package/dist/commands/browser.js.map +0 -1
- package/dist/commands/chat.d.ts +0 -2
- package/dist/commands/chat.js.map +0 -1
- package/dist/commands/checkpoint.d.ts +0 -2
- package/dist/commands/checkpoint.js.map +0 -1
- package/dist/commands/claude.d.ts +0 -16
- package/dist/commands/claude.js.map +0 -1
- package/dist/commands/credits.d.ts +0 -2
- package/dist/commands/credits.js.map +0 -1
- package/dist/commands/db.d.ts +0 -2
- package/dist/commands/db.js.map +0 -1
- package/dist/commands/deploy.d.ts +0 -2
- package/dist/commands/deploy.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/domain.d.ts +0 -2
- package/dist/commands/domain.js.map +0 -1
- package/dist/commands/email.d.ts +0 -2
- package/dist/commands/email.js.map +0 -1
- package/dist/commands/file.d.ts +0 -2
- package/dist/commands/file.js.map +0 -1
- package/dist/commands/fn.d.ts +0 -2
- package/dist/commands/fn.js.map +0 -1
- package/dist/commands/generate.d.ts +0 -2
- package/dist/commands/generate.js.map +0 -1
- package/dist/commands/gmail.d.ts +0 -2
- package/dist/commands/gmail.js.map +0 -1
- package/dist/commands/hook-capture.d.ts +0 -15
- package/dist/commands/hook-capture.js.map +0 -1
- package/dist/commands/init.d.ts +0 -2
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/job.d.ts +0 -2
- package/dist/commands/job.js.map +0 -1
- package/dist/commands/location.d.ts +0 -9
- package/dist/commands/location.js.map +0 -1
- package/dist/commands/login.d.ts +0 -2
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -2
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -2
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/page-inspect.d.ts +0 -2
- package/dist/commands/page-inspect.js.map +0 -1
- package/dist/commands/page-screenshot.d.ts +0 -2
- package/dist/commands/page-screenshot.js.map +0 -1
- package/dist/commands/plan.d.ts +0 -2
- package/dist/commands/plan.js.map +0 -1
- package/dist/commands/project.d.ts +0 -2
- package/dist/commands/project.js.map +0 -1
- package/dist/commands/push.d.ts +0 -2
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/rbac.d.ts +0 -2
- package/dist/commands/rbac.js.map +0 -1
- package/dist/commands/realtime.d.ts +0 -2
- package/dist/commands/realtime.js.map +0 -1
- package/dist/commands/records.d.ts +0 -2
- package/dist/commands/records.js.map +0 -1
- package/dist/commands/relay-install.d.ts +0 -11
- package/dist/commands/relay-install.js.map +0 -1
- package/dist/commands/relay.d.ts +0 -9
- package/dist/commands/relay.js.map +0 -1
- package/dist/commands/sandbox.d.ts +0 -2
- package/dist/commands/sandbox.js.map +0 -1
- package/dist/commands/scaffold.d.ts +0 -2
- package/dist/commands/scaffold.js.map +0 -1
- package/dist/commands/skill.d.ts +0 -2
- package/dist/commands/skill.js.map +0 -1
- package/dist/commands/skills.d.ts +0 -2
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/start-cc.d.ts +0 -2
- package/dist/commands/start-cc.js.map +0 -1
- package/dist/commands/status.d.ts +0 -2
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/sync.d.ts +0 -2
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/test.d.ts +0 -2
- package/dist/commands/test.js.map +0 -1
- package/dist/commands/uninstall.d.ts +0 -10
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/update.d.ts +0 -2
- package/dist/commands/update.js.map +0 -1
- package/dist/commands/upload.d.ts +0 -2
- package/dist/commands/upload.js.map +0 -1
- package/dist/commands/workflow.d.ts +0 -2
- package/dist/commands/workflow.js.map +0 -1
- package/dist/config.d.ts +0 -39
- package/dist/config.js.map +0 -1
- package/dist/flag-aliases.d.ts +0 -12
- package/dist/flag-aliases.js.map +0 -1
- package/dist/gip3dw-guide.d.ts +0 -7
- package/dist/gip3dw-guide.js.map +0 -1
- package/dist/gipcc.d.ts +0 -2
- package/dist/gipcc.js.map +0 -1
- package/dist/gipccd.d.ts +0 -2
- package/dist/gipccd.js.map +0 -1
- package/dist/help-skills.d.ts +0 -7
- package/dist/help-skills.js.map +0 -1
- package/dist/helpers/command.d.ts +0 -12
- package/dist/helpers/command.js.map +0 -1
- package/dist/helpers/index.d.ts +0 -6
- package/dist/helpers/index.js.map +0 -1
- package/dist/helpers/output.d.ts +0 -22
- package/dist/helpers/output.js.map +0 -1
- package/dist/helpers/sync.d.ts +0 -13
- package/dist/helpers/sync.js.map +0 -1
- package/dist/hooks/capture-runner.d.ts +0 -24
- package/dist/hooks/capture-runner.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/knowledge.d.ts +0 -11
- package/dist/knowledge.js.map +0 -1
- package/dist/platform-overview.d.ts +0 -9
- package/dist/platform-overview.js.map +0 -1
- package/dist/project-setup.d.ts +0 -26
- package/dist/project-setup.js.map +0 -1
- package/dist/prompts.d.ts +0 -80
- package/dist/prompts.js.map +0 -1
- package/dist/provider-docs.d.ts +0 -27
- package/dist/provider-docs.js.map +0 -1
- package/dist/relay/daemon.d.ts +0 -47
- package/dist/relay/daemon.js.map +0 -1
- package/dist/relay/device-http.d.ts +0 -9
- package/dist/relay/device-http.js.map +0 -1
- package/dist/relay/installers.d.ts +0 -24
- package/dist/relay/installers.js.map +0 -1
- package/dist/relay/machine-id.d.ts +0 -2
- package/dist/relay/machine-id.js.map +0 -1
- package/dist/relay/onboarding.d.ts +0 -8
- package/dist/relay/onboarding.js.map +0 -1
- package/dist/relay/paths.d.ts +0 -5
- package/dist/relay/paths.js.map +0 -1
- package/dist/relay/redact.d.ts +0 -34
- package/dist/relay/redact.js.map +0 -1
- package/dist/relay/state.d.ts +0 -39
- package/dist/relay/state.js.map +0 -1
- package/dist/relay/stream-json.d.ts +0 -105
- package/dist/relay/stream-json.js.map +0 -1
- package/dist/relay/transcripts.d.ts +0 -60
- package/dist/relay/transcripts.js.map +0 -1
- package/dist/setup.d.ts +0 -101
- package/dist/setup.js.map +0 -1
- package/dist/sync.d.ts +0 -74
- package/dist/sync.js.map +0 -1
- package/dist/updater/bootstrap.d.ts +0 -13
- package/dist/updater/bootstrap.js.map +0 -1
- package/dist/updater/check.d.ts +0 -12
- package/dist/updater/check.js.map +0 -1
- package/dist/updater/shim.d.ts +0 -2
- package/dist/updater/shim.js.map +0 -1
- package/dist/updater/state.d.ts +0 -24
- package/dist/updater/state.js.map +0 -1
- package/dist/upload.d.ts +0 -40
- package/dist/upload.js.map +0 -1
- package/dist/utils.d.ts +0 -39
- package/dist/utils.js.map +0 -1
package/dist/flag-aliases.js
CHANGED
|
@@ -4,9 +4,13 @@
|
|
|
4
4
|
* rewriting argv before commander parses, so `--help` output is unchanged.
|
|
5
5
|
*
|
|
6
6
|
* Rules for adding an alias:
|
|
7
|
-
* - Must be globally unambiguous across all subcommands.
|
|
8
7
|
* - Must be a plausible LLM guess, not a typo fix.
|
|
9
8
|
* - Never alias short flags.
|
|
9
|
+
* - May collide with a real flag on a specific command (e.g. `--from` is a
|
|
10
|
+
* friendly alias for `--since` on `logs`, but a real required option on
|
|
11
|
+
* `workflow create`). Pass the resolved `program` to normalizeAliases and a
|
|
12
|
+
* token is left untouched whenever the command it targets declares it for
|
|
13
|
+
* real — so the real option always wins on the command that owns it.
|
|
10
14
|
*/
|
|
11
15
|
export const FLAG_ALIASES = {
|
|
12
16
|
'--out': '--output',
|
|
@@ -28,17 +32,52 @@ export const FLAG_ALIASES = {
|
|
|
28
32
|
'--after': '--since',
|
|
29
33
|
'--delay': '--wait',
|
|
30
34
|
};
|
|
31
|
-
export function normalizeAliases(argv) {
|
|
35
|
+
export function normalizeAliases(argv, program) {
|
|
36
|
+
// Flags the targeted command declares for real — never alias these, so a
|
|
37
|
+
// command's own option always wins over a global guess.
|
|
38
|
+
const realFlags = program ? collectRealFlags(argv, program) : new Set();
|
|
32
39
|
return argv.map(tok => {
|
|
33
40
|
if (!tok.startsWith('--'))
|
|
34
41
|
return tok;
|
|
35
42
|
const eq = tok.indexOf('=');
|
|
36
43
|
if (eq > 0) {
|
|
37
44
|
const name = tok.slice(0, eq);
|
|
45
|
+
if (realFlags.has(name))
|
|
46
|
+
return tok;
|
|
38
47
|
const canonical = FLAG_ALIASES[name];
|
|
39
48
|
return canonical ? `${canonical}${tok.slice(eq)}` : tok;
|
|
40
49
|
}
|
|
50
|
+
if (realFlags.has(tok))
|
|
51
|
+
return tok;
|
|
41
52
|
return FLAG_ALIASES[tok] ?? tok;
|
|
42
53
|
});
|
|
43
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the deepest subcommand argv targets (descending program → command →
|
|
57
|
+
* subcommand by name/alias) and return every long flag declared on it and its
|
|
58
|
+
* ancestors. Used to suppress an alias when the resolved command owns that flag.
|
|
59
|
+
*/
|
|
60
|
+
function collectRealFlags(argv, program) {
|
|
61
|
+
// process.argv is [node, script, ...args]; start scanning at the first arg.
|
|
62
|
+
const args = argv.slice(2);
|
|
63
|
+
let cmd = program;
|
|
64
|
+
const chain = [program];
|
|
65
|
+
for (const tok of args) {
|
|
66
|
+
if (tok.startsWith('-'))
|
|
67
|
+
break; // first flag ends command resolution
|
|
68
|
+
const next = cmd.commands.find(c => c.name() === tok || c.aliases().includes(tok));
|
|
69
|
+
if (!next)
|
|
70
|
+
break;
|
|
71
|
+
cmd = next;
|
|
72
|
+
chain.push(next);
|
|
73
|
+
}
|
|
74
|
+
const flags = new Set();
|
|
75
|
+
for (const c of chain) {
|
|
76
|
+
for (const opt of c.options) {
|
|
77
|
+
if (opt.long)
|
|
78
|
+
flags.add(opt.long);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return flags;
|
|
82
|
+
}
|
|
44
83
|
//# sourceMappingURL=flag-aliases.js.map
|
package/dist/index.js
CHANGED
|
@@ -28,8 +28,7 @@ import { fileCommand } from './commands/file.js';
|
|
|
28
28
|
import { claudeCommand } from './commands/claude.js';
|
|
29
29
|
import { addCommand } from './commands/add.js';
|
|
30
30
|
import { logsCommand } from './commands/logs.js';
|
|
31
|
-
import {
|
|
32
|
-
import { pageScreenshotCommand } from './commands/page-screenshot.js';
|
|
31
|
+
import { pageCommand } from './commands/page.js';
|
|
33
32
|
import { recordsCommand } from './commands/records.js';
|
|
34
33
|
import { fnCommand } from './commands/fn.js';
|
|
35
34
|
import { jobCommand } from './commands/job.js';
|
|
@@ -97,7 +96,7 @@ const connectGroup = [claudeCommand, relayCommand];
|
|
|
97
96
|
const projectGroup = [domainCommand, statusCommand, initCommand];
|
|
98
97
|
const filesGroup = [fileCommand, syncCommand, pushCommand, uploadCommand];
|
|
99
98
|
const appBuildingGroup = [testCommand, fnCommand, jobCommand, dbCommand, logsCommand, workflowCommand, realtimeCommand, rbacCommand, auditCommand, recordsCommand];
|
|
100
|
-
const utilitiesGroup = [
|
|
99
|
+
const utilitiesGroup = [pageCommand, sandboxCommand, generateCommand, emailCommand, gmailCommand, locationCommand];
|
|
101
100
|
const agentGroup = [chatCommand, memoryCommand, agentCommand, approvalCommand];
|
|
102
101
|
const setupGroup = [loginCommand, logoutCommand, creditsCommand, planCommand, doctorCommand, updateCommand, uninstallCommand];
|
|
103
102
|
const HELP_SECTIONS = [
|
|
@@ -183,5 +182,5 @@ if (mappedCmd) {
|
|
|
183
182
|
process.exit(0);
|
|
184
183
|
}
|
|
185
184
|
}
|
|
186
|
-
program.parse(normalizeAliases(process.argv));
|
|
185
|
+
program.parse(normalizeAliases(process.argv, program));
|
|
187
186
|
//# sourceMappingURL=index.js.map
|
package/dist/knowledge.js
CHANGED
|
@@ -52,11 +52,11 @@ Gipity ships its own services for things apps usually pull from a third party -
|
|
|
52
52
|
|
|
53
53
|
The full rule and definition of done are injected at the top of every session context. In short: if the user asks you to build something deployable (web app, game, API), run \`gipity add <template>\` first (default \`web-simple\`); if it's a one-off task (analysis, PDFs, data work), use \`gipity sandbox run\` instead. To add a reusable building block to an existing app (e.g. multiplayer), \`gipity add <kit>\`.
|
|
54
54
|
|
|
55
|
-
Build loop: \`gipity add\` → edit files → \`gipity deploy dev\` → \`gipity page
|
|
55
|
+
Build loop: \`gipity add\` → edit files → \`gipity deploy dev\` → \`gipity page inspect <url>\` → fix any errors → repeat until the definition of done is met.
|
|
56
56
|
|
|
57
57
|
## CLI quick reference
|
|
58
58
|
|
|
59
|
-
Key commands: \`gipity add <template|kit>\`, \`gipity deploy dev\`, \`gipity sandbox run\`, \`gipity page
|
|
59
|
+
Key commands: \`gipity add <template|kit>\`, \`gipity deploy dev\`, \`gipity sandbox run\`, \`gipity page inspect <url>\`, \`gipity db query "SQL"\`, \`gipity fn call <name>\`, \`gipity logs fn <name>\`, \`gipity skill read <name>\`.
|
|
60
60
|
Run \`gipity --help\` for the full list. Use \`--help\` on any command for details.
|
|
61
61
|
|
|
62
62
|
## Files and sync
|
|
@@ -79,10 +79,11 @@ App services skills (load before calling \`/services/*\` endpoints):
|
|
|
79
79
|
- \`app-video\` - Veo models, aspect, resolution
|
|
80
80
|
|
|
81
81
|
App development skills:
|
|
82
|
-
- \`app-debugging\` - debug a deployed app: page
|
|
82
|
+
- \`app-debugging\` - debug a deployed app: page inspect/eval, screenshots, function logs
|
|
83
83
|
- \`app-development\` - functions, database, and API
|
|
84
84
|
- \`deploy\` - the deploy pipeline & gipity.yaml manifest
|
|
85
85
|
- \`jobs\` - long-running CPU + GPU compute jobs (Python / Node / bash)
|
|
86
|
+
- \`realtime-scheduled-app\` - recipe: realtime presence/messages + DB function + scheduled poster, end-to-end
|
|
86
87
|
- \`web-app-basics\` - coding guidelines, file structure, HTML/CSS/JS patterns
|
|
87
88
|
|
|
88
89
|
Kit skills (reusable building blocks - \`gipity add <kit>\`):
|
|
@@ -93,7 +94,7 @@ Other key skills:
|
|
|
93
94
|
- \`tts\` - agent-side speech tools (different from the \`app-tts\` HTTP service)`;
|
|
94
95
|
export const DEFINITION_OF_DONE = `## Definition of done (build tasks)
|
|
95
96
|
1. \`gipity deploy dev\` succeeds and you have a live URL.
|
|
96
|
-
2. \`gipity page
|
|
97
|
+
2. \`gipity page inspect <url>\` returns no console errors and the page loads (HTTP 200, no blank screen).
|
|
97
98
|
3. For apps with functions: \`gipity test\` passes.
|
|
98
99
|
4. You told the user the live URL.
|
|
99
100
|
|
package/dist/project-setup.js
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
import { clearConfigCache, saveConfigAt, getApiBaseOverride } from './config.js';
|
|
8
8
|
import { sync } from './sync.js';
|
|
9
9
|
import { setupClaudeHooks, setupGitignore, SUPPORTED_TOOLS, DEFAULT_SYNC_IGNORE } from './setup.js';
|
|
10
|
+
import { substituteDir } from './template-vars.js';
|
|
11
|
+
import { muted } from './colors.js';
|
|
10
12
|
/** Write `.gipity.json` in `dir`, chdir into it so the hook/skill writers
|
|
11
13
|
* target the right place, sync files, and install Claude Code hooks/skills/
|
|
12
14
|
* gitignore. Returns sync counts so callers can print a summary. */
|
|
@@ -23,6 +25,28 @@ export async function finalizeLocalProject(opts) {
|
|
|
23
25
|
saveConfigAt(opts.dir, config);
|
|
24
26
|
process.chdir(opts.dir);
|
|
25
27
|
clearConfigCache();
|
|
28
|
+
// Resolve `{{PROJECT_GUID}}` / `{{TITLE}}` / `{{ANALYTICS_SCRIPT}}` etc.
|
|
29
|
+
// BEFORE sync uploads. Otherwise a template's placeholder strings would
|
|
30
|
+
// ship verbatim to production (we hit this with karaoke-captions where
|
|
31
|
+
// `APP_GUID` resolved to the literal `'{{PROJECT_GUID}}'` and every API
|
|
32
|
+
// call 404'd). Mirrors what installTemplate does server-side for `gipity
|
|
33
|
+
// add` — keeps the two install paths behaviorally consistent.
|
|
34
|
+
try {
|
|
35
|
+
const sub = await substituteDir(opts.dir, {
|
|
36
|
+
projectGuid: opts.projectGuid,
|
|
37
|
+
projectName: opts.projectName,
|
|
38
|
+
});
|
|
39
|
+
if (sub.changed.length) {
|
|
40
|
+
console.log(muted(`Resolved template vars in ${sub.changed.length} file${sub.changed.length > 1 ? 's' : ''}.`));
|
|
41
|
+
}
|
|
42
|
+
for (const u of sub.unresolved) {
|
|
43
|
+
console.warn(muted(` ${u.path}: unknown placeholder${u.tokens.length > 1 ? 's' : ''} ${u.tokens.join(', ')}`));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
// Substitution failure shouldn't block init — log and continue.
|
|
48
|
+
console.warn(muted(`Template substitution skipped: ${err.message}`));
|
|
49
|
+
}
|
|
26
50
|
let applied = 0;
|
|
27
51
|
try {
|
|
28
52
|
const result = await sync({ interactive: opts.interactive ?? false });
|
package/dist/setup.js
CHANGED
|
@@ -54,7 +54,7 @@ export const PERMISSIONS_SETTINGS = {
|
|
|
54
54
|
'Bash(gipity db list *)',
|
|
55
55
|
'Bash(gipity db create *)',
|
|
56
56
|
'Bash(gipity memory *)',
|
|
57
|
-
'Bash(gipity page
|
|
57
|
+
'Bash(gipity page *)',
|
|
58
58
|
'Bash(gipity logs *)',
|
|
59
59
|
'Bash(gipity sandbox *)',
|
|
60
60
|
'Bash(gipity chat *)',
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve `{{PLACEHOLDER}}` tokens in local template files at `gipity init`
|
|
3
|
+
* time. Mirrors what `installTemplate` does server-side for `gipity add` —
|
|
4
|
+
* keeping the two flows in sync so a template installed via the dev/CLI
|
|
5
|
+
* path doesn't ship literal `{{PROJECT_GUID}}` strings to production.
|
|
6
|
+
*
|
|
7
|
+
* The placeholders + values match `installFromDisk` in
|
|
8
|
+
* `platform/server/src/services/template.ts`. When you add or rename a key
|
|
9
|
+
* there, mirror it here (and add a test).
|
|
10
|
+
*/
|
|
11
|
+
import { promises as fs, readdirSync, statSync } from 'fs';
|
|
12
|
+
import { join, relative, extname } from 'path';
|
|
13
|
+
import { isSyncIgnored } from './setup.js';
|
|
14
|
+
/** File extensions we substitute in. Binaries (images, audio, fonts) are
|
|
15
|
+
* skipped. Anything outside this set is left untouched on disk. */
|
|
16
|
+
const SUBSTITUTABLE_EXTS = new Set([
|
|
17
|
+
'.html', '.htm',
|
|
18
|
+
'.js', '.ts', '.jsx', '.tsx', '.mjs', '.cjs',
|
|
19
|
+
'.css',
|
|
20
|
+
'.json',
|
|
21
|
+
'.yaml', '.yml',
|
|
22
|
+
'.md',
|
|
23
|
+
'.txt',
|
|
24
|
+
'.xml',
|
|
25
|
+
'.svg',
|
|
26
|
+
]);
|
|
27
|
+
/** Every placeholder the substitution recognises. Files that don't reference
|
|
28
|
+
* any of these stay untouched. Files that reference one we don't know
|
|
29
|
+
* trigger the test in `__tests__/template-vars.test.ts` so the gap surfaces
|
|
30
|
+
* loudly instead of shipping `{{X}}` literally. */
|
|
31
|
+
export const KNOWN_PLACEHOLDERS = [
|
|
32
|
+
'{{TITLE}}',
|
|
33
|
+
'{{JS_TITLE}}',
|
|
34
|
+
'{{PROJECT_GUID}}',
|
|
35
|
+
'{{DATABASE}}',
|
|
36
|
+
'{{DESCRIPTION_META}}',
|
|
37
|
+
'{{OG_DESCRIPTION}}',
|
|
38
|
+
'{{JSON_LD_BLOCK}}',
|
|
39
|
+
'{{ANALYTICS_SCRIPT}}',
|
|
40
|
+
];
|
|
41
|
+
function escapeHtml(s) {
|
|
42
|
+
return s
|
|
43
|
+
.replace(/&/g, '&')
|
|
44
|
+
.replace(/</g, '<')
|
|
45
|
+
.replace(/>/g, '>')
|
|
46
|
+
.replace(/"/g, '"')
|
|
47
|
+
.replace(/'/g, ''');
|
|
48
|
+
}
|
|
49
|
+
function jsEscape(s) {
|
|
50
|
+
return s.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
|
|
51
|
+
}
|
|
52
|
+
/** Build the substitution map. Pure — easy to unit-test. */
|
|
53
|
+
export function buildTemplateVars(v) {
|
|
54
|
+
const safeTitle = escapeHtml(v.projectName);
|
|
55
|
+
const safeDesc = v.description ? escapeHtml(v.description) : '';
|
|
56
|
+
const slug = v.projectName.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_|_$/g, '').slice(0, 30) || 'my_app';
|
|
57
|
+
const jsonLd = JSON.stringify({
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'WebApplication',
|
|
60
|
+
name: v.projectName,
|
|
61
|
+
...(v.description ? { description: v.description } : {}),
|
|
62
|
+
}, null, 2).replace(/<\//g, '<\\/');
|
|
63
|
+
return {
|
|
64
|
+
'{{TITLE}}': safeTitle,
|
|
65
|
+
'{{JS_TITLE}}': jsEscape(v.projectName),
|
|
66
|
+
'{{PROJECT_GUID}}': v.projectGuid,
|
|
67
|
+
'{{DATABASE}}': slug,
|
|
68
|
+
'{{DESCRIPTION_META}}': v.description ? `\n <meta name="description" content="${safeDesc}">` : '',
|
|
69
|
+
'{{OG_DESCRIPTION}}': v.description ? `\n <meta property="og:description" content="${safeDesc}">` : '',
|
|
70
|
+
'{{JSON_LD_BLOCK}}': `<script type="application/ld+json">\n${jsonLd}\n </script>`,
|
|
71
|
+
'{{ANALYTICS_SCRIPT}}': `<script defer src="https://media.gipity.ai/client/v1/gipity.js" data-app="${v.projectGuid}"></script>`,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/** Pure string substitution — exported so the test can exercise it without
|
|
75
|
+
* touching the filesystem. */
|
|
76
|
+
export function substituteString(content, vars) {
|
|
77
|
+
let out = content;
|
|
78
|
+
for (const [key, value] of Object.entries(vars)) {
|
|
79
|
+
out = out.replaceAll(key, value);
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
/** Yield text-file relative paths under `root`, respecting isSyncIgnored.
|
|
84
|
+
* Inline because we want a simpler walker than sync.ts's (no baseline, no
|
|
85
|
+
* hashing) — just rel-paths we'll read+rewrite. */
|
|
86
|
+
function* walkTextFiles(root) {
|
|
87
|
+
const stack = [root];
|
|
88
|
+
while (stack.length) {
|
|
89
|
+
const dir = stack.pop();
|
|
90
|
+
let entries;
|
|
91
|
+
try {
|
|
92
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
for (const entry of entries) {
|
|
98
|
+
if (isSyncIgnored(entry.name))
|
|
99
|
+
continue;
|
|
100
|
+
const full = join(dir, entry.name);
|
|
101
|
+
if (entry.isDirectory()) {
|
|
102
|
+
stack.push(full);
|
|
103
|
+
}
|
|
104
|
+
else if (entry.isFile()) {
|
|
105
|
+
try {
|
|
106
|
+
if (!statSync(full).isFile())
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
yield relative(root, full).replace(/\\/g, '/');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/** Walk `dir` (respecting the project's sync-ignore rules), substitute every
|
|
118
|
+
* known placeholder in text files, and write the result back. Files without
|
|
119
|
+
* placeholders are not touched. Files with unknown placeholders are logged. */
|
|
120
|
+
export async function substituteDir(dir, vars) {
|
|
121
|
+
const lookup = buildTemplateVars(vars);
|
|
122
|
+
const knownKeys = new Set(Object.keys(lookup));
|
|
123
|
+
const changed = [];
|
|
124
|
+
const unresolved = [];
|
|
125
|
+
for (const rel of walkTextFiles(dir)) {
|
|
126
|
+
const ext = extname(rel).toLowerCase();
|
|
127
|
+
if (!SUBSTITUTABLE_EXTS.has(ext))
|
|
128
|
+
continue;
|
|
129
|
+
const abs = join(dir, rel);
|
|
130
|
+
let content;
|
|
131
|
+
try {
|
|
132
|
+
content = await fs.readFile(abs, 'utf-8');
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
// Quick check before doing replacement work — most files don't have any.
|
|
138
|
+
if (!content.includes('{{'))
|
|
139
|
+
continue;
|
|
140
|
+
const next = substituteString(content, lookup);
|
|
141
|
+
if (next !== content) {
|
|
142
|
+
await fs.writeFile(abs, next, 'utf-8');
|
|
143
|
+
changed.push(rel);
|
|
144
|
+
}
|
|
145
|
+
// Flag any remaining `{{X}}` patterns whose key we don't know about —
|
|
146
|
+
// this is the test signal that the placeholder set is out of date.
|
|
147
|
+
const leftover = next.match(/\{\{[A-Z_]+\}\}/g);
|
|
148
|
+
if (leftover) {
|
|
149
|
+
const unknown = Array.from(new Set(leftover)).filter(k => !knownKeys.has(k));
|
|
150
|
+
if (unknown.length)
|
|
151
|
+
unresolved.push({ path: rel, tokens: unknown });
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return { changed, unresolved };
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=template-vars.js.map
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gipity",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.356",
|
|
4
4
|
"description": "The full-stack platform tuned for AI agents. Database, storage, auth, functions, deploy, and drop-in kits - all agent-tuned. Pair with Claude Code or use standalone.",
|
|
5
5
|
"bin": {
|
|
6
|
-
"gipity": "
|
|
7
|
-
"gipcc": "
|
|
8
|
-
"gipccd": "
|
|
6
|
+
"gipity": "dist/updater/shim.js",
|
|
7
|
+
"gipcc": "dist/gipcc.js",
|
|
8
|
+
"gipccd": "dist/gipccd.js"
|
|
9
9
|
},
|
|
10
10
|
"type": "module",
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "tsc && chmod +x dist/index.js dist/gipcc.js dist/gipccd.js dist/updater/shim.js dist/updater/check.js",
|
|
13
13
|
"dev": "tsc --watch",
|
|
14
14
|
"test": "npm run test:smoke",
|
|
15
|
-
"test:smoke": "tsc && node --test dist/__tests__/utils.test.js dist/__tests__/config.test.js dist/__tests__/sync.test.js dist/__tests__/sync-apply.test.js dist/__tests__/sync-lock.test.js dist/__tests__/push-cas.test.js dist/__tests__/upload.test.js dist/__tests__/updater.test.js dist/__tests__/cli-smoke.test.js dist/__tests__/claude-noninteractive.test.js dist/__tests__/claude-trust.test.js dist/__tests__/relay-state.test.js dist/__tests__/relay-daemon.test.js dist/__tests__/relay-installers.test.js dist/__tests__/relay-bridge-abort.test.js dist/__tests__/relay-redact.test.js dist/__tests__/relay-machine-id.test.js dist/__tests__/stream-json.test.js dist/__tests__/relay-ingest-contract.test.js dist/__tests__/prompts.test.js dist/__tests__/capture-transcript.test.js dist/__tests__/flag-aliases.test.js dist/__tests__/adopt-cwd.test.js dist/__tests__/cli-cmd-agent.test.js dist/__tests__/cli-cmd-approval.test.js dist/__tests__/cli-cmd-audit.test.js dist/__tests__/cli-cmd-chat.test.js dist/__tests__/cli-cmd-credits.test.js dist/__tests__/cli-cmd-db.test.js dist/__tests__/cli-cmd-deploy.test.js dist/__tests__/cli-cmd-domain.test.js dist/__tests__/cli-cmd-email.test.js dist/__tests__/cli-cmd-file.test.js dist/__tests__/cli-cmd-fn.test.js dist/__tests__/cli-cmd-job.test.js dist/__tests__/cli-cmd-generate.test.js dist/__tests__/cli-cmd-gmail.test.js dist/__tests__/cli-cmd-info.test.js dist/__tests__/cli-cmd-init.test.js dist/__tests__/cli-cmd-location.test.js dist/__tests__/cli-cmd-login.test.js dist/__tests__/cli-cmd-logout.test.js dist/__tests__/cli-cmd-logs.test.js dist/__tests__/cli-cmd-memory.test.js dist/__tests__/cli-cmd-page
|
|
15
|
+
"test:smoke": "tsc && node --test dist/__tests__/utils.test.js dist/__tests__/config.test.js dist/__tests__/sync.test.js dist/__tests__/sync-apply.test.js dist/__tests__/sync-lock.test.js dist/__tests__/push-cas.test.js dist/__tests__/upload.test.js dist/__tests__/updater.test.js dist/__tests__/cli-smoke.test.js dist/__tests__/claude-noninteractive.test.js dist/__tests__/claude-trust.test.js dist/__tests__/relay-state.test.js dist/__tests__/relay-daemon.test.js dist/__tests__/relay-installers.test.js dist/__tests__/relay-bridge-abort.test.js dist/__tests__/relay-redact.test.js dist/__tests__/relay-machine-id.test.js dist/__tests__/stream-json.test.js dist/__tests__/relay-ingest-contract.test.js dist/__tests__/prompts.test.js dist/__tests__/capture-transcript.test.js dist/__tests__/flag-aliases.test.js dist/__tests__/adopt-cwd.test.js dist/__tests__/cli-cmd-agent.test.js dist/__tests__/cli-cmd-approval.test.js dist/__tests__/cli-cmd-audit.test.js dist/__tests__/cli-cmd-chat.test.js dist/__tests__/cli-cmd-credits.test.js dist/__tests__/cli-cmd-db.test.js dist/__tests__/cli-cmd-deploy.test.js dist/__tests__/cli-cmd-domain.test.js dist/__tests__/cli-cmd-email.test.js dist/__tests__/cli-cmd-file.test.js dist/__tests__/cli-cmd-fn.test.js dist/__tests__/cli-cmd-job.test.js dist/__tests__/cli-cmd-generate.test.js dist/__tests__/cli-cmd-gmail.test.js dist/__tests__/cli-cmd-info.test.js dist/__tests__/cli-cmd-init.test.js dist/__tests__/cli-cmd-location.test.js dist/__tests__/cli-cmd-login.test.js dist/__tests__/cli-cmd-logout.test.js dist/__tests__/cli-cmd-logs.test.js dist/__tests__/cli-cmd-memory.test.js dist/__tests__/cli-cmd-page.test.js dist/__tests__/cli-cmd-plan.test.js dist/__tests__/cli-cmd-project.test.js dist/__tests__/cli-cmd-rbac.test.js dist/__tests__/cli-cmd-realtime.test.js dist/__tests__/cli-cmd-records.test.js dist/__tests__/cli-cmd-relay.test.js dist/__tests__/cli-cmd-sandbox.test.js dist/__tests__/cli-cmd-add.test.js dist/__tests__/cli-cmd-skill.test.js dist/__tests__/cli-cmd-test.test.js dist/__tests__/cli-cmd-workflow.test.js dist/__tests__/setup-skills-block.test.js",
|
|
16
16
|
"test:e2e": "tsc && GIPITY_E2E=1 node --test --test-timeout=180000 dist/__tests__/cli-e2e-live.test.js"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
"node": ">=18"
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
|
-
"dist",
|
|
31
|
+
"dist/**/*.js",
|
|
32
|
+
"!dist/__tests__/**",
|
|
32
33
|
"hooks"
|
|
33
34
|
],
|
|
34
35
|
"license": "MIT"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unit tests for the cwd-adoption helpers. Pure logic + small fs walks
|
|
3
|
-
* inside tmp dirs - no network, no real platform state.
|
|
4
|
-
*/
|
|
5
|
-
import { describe, it, before, after } from 'node:test';
|
|
6
|
-
import assert from 'node:assert/strict';
|
|
7
|
-
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'fs';
|
|
8
|
-
import { tmpdir, homedir } from 'os';
|
|
9
|
-
import { join, sep } from 'path';
|
|
10
|
-
import { scanForAdoption, isLikelyEmpty, canAdoptCwd, formatCwdLabel, formatBytes, } from '../adopt-cwd.js';
|
|
11
|
-
let root;
|
|
12
|
-
before(() => {
|
|
13
|
-
root = mkdtempSync(join(tmpdir(), 'gipity-adopt-test-'));
|
|
14
|
-
});
|
|
15
|
-
after(() => {
|
|
16
|
-
try {
|
|
17
|
-
rmSync(root, { recursive: true, force: true });
|
|
18
|
-
}
|
|
19
|
-
catch { /* best effort */ }
|
|
20
|
-
});
|
|
21
|
-
function mkdir(p) {
|
|
22
|
-
const full = join(root, p);
|
|
23
|
-
mkdirSync(full, { recursive: true });
|
|
24
|
-
return full;
|
|
25
|
-
}
|
|
26
|
-
function writeBytes(dir, name, n) {
|
|
27
|
-
writeFileSync(join(dir, name), Buffer.alloc(n));
|
|
28
|
-
}
|
|
29
|
-
describe('scanForAdoption', () => {
|
|
30
|
-
it('returns easy tier for a tiny project', () => {
|
|
31
|
-
const d = mkdir('easy');
|
|
32
|
-
writeBytes(d, 'a.txt', 10);
|
|
33
|
-
writeBytes(d, 'b.txt', 10);
|
|
34
|
-
const s = scanForAdoption(d);
|
|
35
|
-
assert.equal(s.tier, 'easy');
|
|
36
|
-
assert.equal(s.files, 2);
|
|
37
|
-
assert.equal(s.bytes, 20);
|
|
38
|
-
assert.equal(s.truncated, false);
|
|
39
|
-
});
|
|
40
|
-
it('handles a missing directory gracefully', () => {
|
|
41
|
-
const s = scanForAdoption(join(root, 'no-such-dir'));
|
|
42
|
-
assert.equal(s.tier, 'easy');
|
|
43
|
-
assert.equal(s.files, 0);
|
|
44
|
-
});
|
|
45
|
-
it('walks nested directories', () => {
|
|
46
|
-
const d = mkdir('nested');
|
|
47
|
-
const sub = mkdir('nested/sub/sub2');
|
|
48
|
-
writeBytes(d, 'top.txt', 1);
|
|
49
|
-
writeBytes(sub, 'deep.txt', 2);
|
|
50
|
-
const s = scanForAdoption(d);
|
|
51
|
-
assert.equal(s.files, 2);
|
|
52
|
-
assert.equal(s.bytes, 3);
|
|
53
|
-
});
|
|
54
|
-
it('returns moderate tier when over the easy file-count threshold', () => {
|
|
55
|
-
const d = mkdir('moderate-files');
|
|
56
|
-
for (let i = 0; i < 250; i++)
|
|
57
|
-
writeBytes(d, `f${i}.txt`, 1);
|
|
58
|
-
const s = scanForAdoption(d);
|
|
59
|
-
assert.equal(s.tier, 'moderate');
|
|
60
|
-
assert.equal(s.truncated, false);
|
|
61
|
-
});
|
|
62
|
-
it('returns refuse + truncated when over the refuse file-count threshold', () => {
|
|
63
|
-
const d = mkdir('refuse-files');
|
|
64
|
-
for (let i = 0; i < 2100; i++)
|
|
65
|
-
writeBytes(d, `f${i}.txt`, 1);
|
|
66
|
-
const s = scanForAdoption(d);
|
|
67
|
-
assert.equal(s.tier, 'refuse');
|
|
68
|
-
assert.equal(s.truncated, true);
|
|
69
|
-
});
|
|
70
|
-
it('skips sync-ignored entries (node_modules, .git)', () => {
|
|
71
|
-
const d = mkdir('with-junk');
|
|
72
|
-
writeBytes(d, 'real.txt', 1);
|
|
73
|
-
const nm = mkdir('with-junk/node_modules');
|
|
74
|
-
writeBytes(nm, 'should-not-count.txt', 999_999);
|
|
75
|
-
const git = mkdir('with-junk/.git');
|
|
76
|
-
writeBytes(git, 'also-skip.txt', 999_999);
|
|
77
|
-
const s = scanForAdoption(d);
|
|
78
|
-
assert.equal(s.files, 1);
|
|
79
|
-
assert.equal(s.bytes, 1);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
describe('isLikelyEmpty', () => {
|
|
83
|
-
it('true for a truly empty dir', () => {
|
|
84
|
-
const d = mkdir('empty');
|
|
85
|
-
assert.equal(isLikelyEmpty(d), true);
|
|
86
|
-
});
|
|
87
|
-
it('true for a dir with only sync-ignored entries', () => {
|
|
88
|
-
const d = mkdir('only-junk');
|
|
89
|
-
mkdir('only-junk/node_modules');
|
|
90
|
-
mkdir('only-junk/.git');
|
|
91
|
-
assert.equal(isLikelyEmpty(d), true);
|
|
92
|
-
});
|
|
93
|
-
it('false when there is any real file', () => {
|
|
94
|
-
const d = mkdir('not-empty');
|
|
95
|
-
writeBytes(d, 'hello.md', 1);
|
|
96
|
-
assert.equal(isLikelyEmpty(d), false);
|
|
97
|
-
});
|
|
98
|
-
it('true when the dir does not exist', () => {
|
|
99
|
-
assert.equal(isLikelyEmpty(join(root, 'ghost')), true);
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
describe('canAdoptCwd', () => {
|
|
103
|
-
it('refuses the filesystem root', () => {
|
|
104
|
-
assert.equal(canAdoptCwd(sep), false);
|
|
105
|
-
});
|
|
106
|
-
it('refuses the user\'s home directory', () => {
|
|
107
|
-
assert.equal(canAdoptCwd(homedir()), false);
|
|
108
|
-
});
|
|
109
|
-
it('refuses system dirs', () => {
|
|
110
|
-
assert.equal(canAdoptCwd('/tmp'), false);
|
|
111
|
-
assert.equal(canAdoptCwd('/etc'), false);
|
|
112
|
-
assert.equal(canAdoptCwd('/usr'), false);
|
|
113
|
-
});
|
|
114
|
-
it('allows a subdirectory of /tmp', () => {
|
|
115
|
-
const d = mkdir('allowed-subdir');
|
|
116
|
-
assert.equal(canAdoptCwd(d), true);
|
|
117
|
-
});
|
|
118
|
-
it('refuses a workspace-parent (depth ≤1 below home with 3+ git children)', () => {
|
|
119
|
-
// Simulate ~/Workspace/{a,b,c}/.git
|
|
120
|
-
const ws = mkdtempSync(join(homedir(), 'gipity-adopt-ws-'));
|
|
121
|
-
try {
|
|
122
|
-
for (const sub of ['a', 'b', 'c']) {
|
|
123
|
-
mkdirSync(join(ws, sub, '.git'), { recursive: true });
|
|
124
|
-
}
|
|
125
|
-
assert.equal(canAdoptCwd(ws), false);
|
|
126
|
-
}
|
|
127
|
-
finally {
|
|
128
|
-
rmSync(ws, { recursive: true, force: true });
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
it('allows a single-project dir even at depth ≤1 under home', () => {
|
|
132
|
-
const single = mkdtempSync(join(homedir(), 'gipity-adopt-single-'));
|
|
133
|
-
try {
|
|
134
|
-
mkdirSync(join(single, '.git'), { recursive: true });
|
|
135
|
-
assert.equal(canAdoptCwd(single), true);
|
|
136
|
-
}
|
|
137
|
-
finally {
|
|
138
|
-
rmSync(single, { recursive: true, force: true });
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
describe('formatCwdLabel', () => {
|
|
143
|
-
it('returns "~" for the home dir', () => {
|
|
144
|
-
assert.equal(formatCwdLabel(homedir()), '~');
|
|
145
|
-
});
|
|
146
|
-
it('uses ~/tail when 1-2 segments deep in home', () => {
|
|
147
|
-
assert.equal(formatCwdLabel(join(homedir(), 'Github')), '~/Github');
|
|
148
|
-
assert.equal(formatCwdLabel(join(homedir(), 'Github', 'Gipity')), '~/Github/Gipity');
|
|
149
|
-
});
|
|
150
|
-
it('uses ~/…/last-2 when deeper in home', () => {
|
|
151
|
-
const deep = join(homedir(), 'a', 'b', 'c', 'd');
|
|
152
|
-
assert.equal(formatCwdLabel(deep), '~/…/c/d');
|
|
153
|
-
});
|
|
154
|
-
it('shows parent/this for non-home paths', () => {
|
|
155
|
-
assert.equal(formatCwdLabel('/tmp/scratch'), 'tmp/scratch');
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
describe('formatBytes', () => {
|
|
159
|
-
it('B for sub-KB', () => {
|
|
160
|
-
assert.equal(formatBytes(0), '0 B');
|
|
161
|
-
assert.equal(formatBytes(512), '512 B');
|
|
162
|
-
});
|
|
163
|
-
it('KB for sub-MB', () => {
|
|
164
|
-
assert.equal(formatBytes(1024), '1.0 KB');
|
|
165
|
-
assert.equal(formatBytes(2048), '2.0 KB');
|
|
166
|
-
});
|
|
167
|
-
it('MB for sub-GB', () => {
|
|
168
|
-
assert.equal(formatBytes(1024 * 1024), '1.0 MB');
|
|
169
|
-
assert.equal(formatBytes(50 * 1024 * 1024), '50.0 MB');
|
|
170
|
-
});
|
|
171
|
-
it('GB for ≥ GB (fixes the "1024.0 MB" overflow at the refuse threshold)', () => {
|
|
172
|
-
assert.equal(formatBytes(1024 * 1024 * 1024), '1.00 GB');
|
|
173
|
-
assert.equal(formatBytes(2.5 * 1024 * 1024 * 1024), '2.50 GB');
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
//# sourceMappingURL=adopt-cwd.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adopt-cwd.test.js","sourceRoot":"","sources":["../../src/__tests__/adopt-cwd.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|