gooseworks 0.4.2 → 0.4.5-dev.15.facf60fb
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 +84 -22
- package/dist/agents/staging.d.ts +38 -0
- package/dist/agents/staging.d.ts.map +1 -0
- package/dist/agents/staging.js +309 -0
- package/dist/agents/staging.js.map +1 -0
- package/dist/auth/credentials.d.ts +1 -0
- package/dist/auth/credentials.d.ts.map +1 -1
- package/dist/auth/credentials.js +26 -8
- package/dist/auth/credentials.js.map +1 -1
- package/dist/auth/device-flow.d.ts +79 -0
- package/dist/auth/device-flow.d.ts.map +1 -0
- package/dist/auth/device-flow.js +411 -0
- package/dist/auth/device-flow.js.map +1 -0
- package/dist/auth/login-mode.d.ts +25 -0
- package/dist/auth/login-mode.d.ts.map +1 -0
- package/dist/auth/login-mode.js +87 -0
- package/dist/auth/login-mode.js.map +1 -0
- package/dist/auth/oauth-server.d.ts +2 -2
- package/dist/auth/oauth-server.d.ts.map +1 -1
- package/dist/auth/oauth-server.js +28 -5
- package/dist/auth/oauth-server.js.map +1 -1
- package/dist/auth/paste-login.d.ts +27 -0
- package/dist/auth/paste-login.d.ts.map +1 -0
- package/dist/auth/paste-login.js +203 -0
- package/dist/auth/paste-login.js.map +1 -0
- package/dist/commands/doctor.d.ts +29 -5
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +116 -63
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/fetch.d.ts +1 -0
- package/dist/commands/fetch.d.ts.map +1 -1
- package/dist/commands/fetch.js +64 -29
- package/dist/commands/fetch.js.map +1 -1
- package/dist/commands/formats.js +2 -2
- package/dist/commands/formats.js.map +1 -1
- package/dist/commands/graphics/publish-flow.js +1 -1
- package/dist/commands/graphics/publish-flow.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +126 -26
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/launch.d.ts +3 -0
- package/dist/commands/launch.d.ts.map +1 -0
- package/dist/commands/launch.js +35 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/login.d.ts +21 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +112 -30
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +7 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/skills.d.ts +50 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +160 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/styles.js +2 -2
- package/dist/commands/styles.js.map +1 -1
- package/dist/commands/tool.d.ts +17 -0
- package/dist/commands/tool.d.ts.map +1 -0
- package/dist/commands/tool.js +239 -0
- package/dist/commands/tool.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +37 -6
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/video-local.d.ts +9 -0
- package/dist/commands/video-local.d.ts.map +1 -0
- package/dist/commands/video-local.js +83 -0
- package/dist/commands/video-local.js.map +1 -0
- package/dist/commands/video-save.d.ts +3 -0
- package/dist/commands/video-save.d.ts.map +1 -0
- package/dist/commands/video-save.js +83 -0
- package/dist/commands/video-save.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -3
- package/dist/config.js.map +1 -1
- package/dist/environment.d.ts +9 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +105 -0
- package/dist/environment.js.map +1 -0
- package/dist/index.js +12 -38
- package/dist/index.js.map +1 -1
- package/dist/lib/graphics-cache.d.ts.map +1 -1
- package/dist/lib/graphics-cache.js +2 -2
- package/dist/lib/graphics-cache.js.map +1 -1
- package/dist/lib/mcp-client.d.ts +53 -0
- package/dist/lib/mcp-client.d.ts.map +1 -0
- package/dist/lib/mcp-client.js +196 -0
- package/dist/lib/mcp-client.js.map +1 -0
- package/dist/lib/video-local-captions.d.ts +83 -0
- package/dist/lib/video-local-captions.d.ts.map +1 -0
- package/dist/lib/video-local-captions.js +261 -0
- package/dist/lib/video-local-captions.js.map +1 -0
- package/dist/lib/video-local-runtime.d.ts +8 -0
- package/dist/lib/video-local-runtime.d.ts.map +1 -0
- package/dist/lib/video-local-runtime.js +201 -0
- package/dist/lib/video-local-runtime.js.map +1 -0
- package/dist/lib/video-save-mcp.d.ts +9 -0
- package/dist/lib/video-save-mcp.d.ts.map +1 -0
- package/dist/lib/video-save-mcp.js +162 -0
- package/dist/lib/video-save-mcp.js.map +1 -0
- package/dist/lib/video-save.d.ts +77 -0
- package/dist/lib/video-save.d.ts.map +1 -0
- package/dist/lib/video-save.js +440 -0
- package/dist/lib/video-save.js.map +1 -0
- package/dist/program.d.ts +2 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +56 -0
- package/dist/program.js.map +1 -0
- package/dist/skills/custom-video-skill.d.ts +3 -0
- package/dist/skills/custom-video-skill.d.ts.map +1 -0
- package/dist/skills/custom-video-skill.js +6 -0
- package/dist/skills/custom-video-skill.js.map +1 -0
- package/dist/skills/installer.d.ts +12 -6
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +82 -38
- package/dist/skills/installer.js.map +1 -1
- package/dist/skills/master-skill.d.ts +34 -28
- package/dist/skills/master-skill.d.ts.map +1 -1
- package/dist/skills/master-skill.js +2264 -858
- package/dist/skills/master-skill.js.map +1 -1
- package/dist/skills/package-freshness.d.ts +16 -0
- package/dist/skills/package-freshness.d.ts.map +1 -0
- package/dist/skills/package-freshness.js +36 -0
- package/dist/skills/package-freshness.js.map +1 -0
- package/dist/skills/releases.d.ts +12 -0
- package/dist/skills/releases.d.ts.map +1 -0
- package/dist/skills/releases.js +155 -0
- package/dist/skills/releases.js.map +1 -0
- package/dist/skills/routes.d.ts.map +1 -1
- package/dist/skills/routes.js +12 -6
- package/dist/skills/routes.js.map +1 -1
- package/dist/skills/staging-content.d.ts +3 -0
- package/dist/skills/staging-content.d.ts.map +1 -0
- package/dist/skills/staging-content.js +12 -0
- package/dist/skills/staging-content.js.map +1 -0
- package/dist/utils/browser-preflight.d.ts +29 -0
- package/dist/utils/browser-preflight.d.ts.map +1 -0
- package/dist/utils/browser-preflight.js +338 -0
- package/dist/utils/browser-preflight.js.map +1 -0
- package/dist/utils/http.d.ts +7 -1
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +5 -1
- package/dist/utils/http.js.map +1 -1
- package/package.json +11 -3
- package/skills/goose-ads/SKILL.md +509 -239
- package/skills/goose-product-photos/SKILL.md +161 -60
- package/skills/goose-video/SKILL.md +592 -259
- package/skills/goose-video-local/SKILL.md +1409 -236
- package/skills/gooseworks/SKILL.md +327 -34
- package/skills/make-custom-video/SKILL.md +735 -0
- package/skills/manifest.json +12 -0
- package/skills/routes.json +13 -6
- package/dist/skills/fetcher.d.ts +0 -18
- package/dist/skills/fetcher.d.ts.map +0 -1
- package/dist/skills/fetcher.js +0 -118
- package/dist/skills/fetcher.js.map +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.chooseLoginMode = chooseLoginMode;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
function truthy(value) {
|
|
39
|
+
if (value === undefined)
|
|
40
|
+
return false;
|
|
41
|
+
const v = value.trim().toLowerCase();
|
|
42
|
+
return v !== '' && v !== '0' && v !== 'false';
|
|
43
|
+
}
|
|
44
|
+
function isWsl(env, readFile) {
|
|
45
|
+
if (env.WSL_DISTRO_NAME)
|
|
46
|
+
return true;
|
|
47
|
+
try {
|
|
48
|
+
return readFile('/proc/version').toLowerCase().includes('microsoft');
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Picks browser (localhost callback) or device (code + link) sign-in.
|
|
56
|
+
*
|
|
57
|
+
* Explicit flags win, then `GOOSEWORKS_LOGIN`, then a pending device sign-in,
|
|
58
|
+
* then environment heuristics that only fire where a local browser can't reach
|
|
59
|
+
* the CLI (SSH, CI, Linux with no display, containers). macOS/Windows desktops
|
|
60
|
+
* always get the browser flow by default. We can't rely on `open()` failing:
|
|
61
|
+
* open@7 resolves on Linux even with no browser.
|
|
62
|
+
*/
|
|
63
|
+
function chooseLoginMode(opts, env = process.env, platform = process.platform, exists = fs.existsSync, readFile = (file) => fs.readFileSync(file, 'utf-8')) {
|
|
64
|
+
if (opts.device)
|
|
65
|
+
return { mode: 'device', reason: '--device' };
|
|
66
|
+
if (opts.noWait)
|
|
67
|
+
return { mode: 'device', reason: '--no-wait' };
|
|
68
|
+
if (opts.browser)
|
|
69
|
+
return { mode: 'browser', reason: '--browser' };
|
|
70
|
+
const forced = env.GOOSEWORKS_LOGIN?.trim().toLowerCase();
|
|
71
|
+
if (forced === 'device' || forced === 'browser')
|
|
72
|
+
return { mode: forced, reason: `GOOSEWORKS_LOGIN=${forced}` };
|
|
73
|
+
if (opts.pendingLogin)
|
|
74
|
+
return { mode: 'device', reason: 'resuming a pending device sign-in' };
|
|
75
|
+
if (env.SSH_CONNECTION || env.SSH_CLIENT || env.SSH_TTY)
|
|
76
|
+
return { mode: 'device', reason: 'SSH session' };
|
|
77
|
+
if (truthy(env.CI))
|
|
78
|
+
return { mode: 'device', reason: 'CI environment' };
|
|
79
|
+
if (platform === 'linux' && !env.DISPLAY && !env.WAYLAND_DISPLAY && !isWsl(env, readFile)) {
|
|
80
|
+
return { mode: 'device', reason: 'Linux without a display' };
|
|
81
|
+
}
|
|
82
|
+
if (exists('/.dockerenv') || exists('/run/.containerenv') || env.container || env.KUBERNETES_SERVICE_HOST) {
|
|
83
|
+
return { mode: 'device', reason: 'container' };
|
|
84
|
+
}
|
|
85
|
+
return { mode: 'browser', reason: 'default' };
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=login-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-mode.js","sourceRoot":"","sources":["../../src/auth/login-mode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,0CA6BC;AApED,uCAAyB;AAezB,SAAS,MAAM,CAAC,KAAyB;IACvC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,OAAO,CAAC;AAChD,CAAC;AAED,SAAS,KAAK,CAAC,GAAsB,EAAE,QAAkC;IACvE,IAAI,GAAG,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAC7B,IAAsB,EACtB,MAAyB,OAAO,CAAC,GAAG,EACpC,WAA4B,OAAO,CAAC,QAAQ,EAC5C,SAAoC,EAAE,CAAC,UAAU,EACjD,WAAqC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;IAE7E,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAChE,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAElE,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,MAAM,EAAE,EAAE,CAAC;IAE/G,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;IAE9F,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAE1G,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAExE,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAC1G,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
export declare const OAUTH_TIMEOUT_MS = 300000;
|
|
2
|
+
export interface OAuthResult {
|
|
2
3
|
api_key: string;
|
|
3
4
|
email: string;
|
|
4
5
|
agent_id: string;
|
|
@@ -14,5 +15,4 @@ interface OAuthResult {
|
|
|
14
15
|
* authenticated attribution call.
|
|
15
16
|
*/
|
|
16
17
|
export declare function runOAuthFlow(apiBase: string, attributionRef?: string): Promise<OAuthResult>;
|
|
17
|
-
export {};
|
|
18
18
|
//# sourceMappingURL=oauth-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,gBAAgB,SAAU,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAmJtB"}
|
|
@@ -36,6 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.OAUTH_TIMEOUT_MS = void 0;
|
|
39
40
|
exports.runOAuthFlow = runOAuthFlow;
|
|
40
41
|
const http = __importStar(require("http"));
|
|
41
42
|
const crypto = __importStar(require("crypto"));
|
|
@@ -43,7 +44,10 @@ const open_1 = __importDefault(require("open"));
|
|
|
43
44
|
const credentials_1 = require("./credentials");
|
|
44
45
|
const logger = __importStar(require("../utils/logger"));
|
|
45
46
|
const config_1 = require("../config");
|
|
46
|
-
const
|
|
47
|
+
const environment_1 = require("../environment");
|
|
48
|
+
// Five minutes (GOOSE-3937). The timeout message points remote shells at
|
|
49
|
+
// `gooseworks login --device`, which does not need this local callback.
|
|
50
|
+
exports.OAUTH_TIMEOUT_MS = 300_000;
|
|
47
51
|
/**
|
|
48
52
|
* @param attributionRef Referral or marketing code (from `--ref`). Forwarded to
|
|
49
53
|
* the `/cli/auth` page as `?creator_ref=`, which passes it onto `/auth/google`
|
|
@@ -66,6 +70,7 @@ async function runOAuthFlow(apiBase, attributionRef) {
|
|
|
66
70
|
const scopeType = url.searchParams.get('scope_type');
|
|
67
71
|
const defaultAgentId = url.searchParams.get('default_agent_id');
|
|
68
72
|
const mcpServerUrl = url.searchParams.get('mcp_server_url');
|
|
73
|
+
const returnedApiBase = url.searchParams.get('api_base');
|
|
69
74
|
const returnedState = url.searchParams.get('state');
|
|
70
75
|
if (returnedState !== state) {
|
|
71
76
|
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
@@ -81,12 +86,26 @@ async function runOAuthFlow(apiBase, attributionRef) {
|
|
|
81
86
|
api_key: token,
|
|
82
87
|
email,
|
|
83
88
|
agent_id: agentId,
|
|
84
|
-
api_base: apiBase,
|
|
89
|
+
api_base: returnedApiBase || apiBase,
|
|
85
90
|
...(scopeType ? { scope_type: scopeType } : {}),
|
|
86
91
|
...(defaultAgentId ? { default_agent_id: defaultAgentId } : {}),
|
|
87
92
|
...(mcpServerUrl ? { mcp_server_url: mcpServerUrl } : {}),
|
|
88
93
|
};
|
|
89
|
-
|
|
94
|
+
try {
|
|
95
|
+
if ((0, environment_1.getEnvironment)() === 'staging' && (!returnedApiBase || new URL(returnedApiBase).origin !== new URL(apiBase).origin))
|
|
96
|
+
throw new Error('The login callback did not confirm the staging API');
|
|
97
|
+
(0, credentials_1.validateCredentials)(creds);
|
|
98
|
+
(0, credentials_1.saveCredentials)(creds);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
res.writeHead(400, { 'Content-Type': 'text/plain' });
|
|
102
|
+
res.end('Connection did not match the selected GooseWorks environment.');
|
|
103
|
+
setTimeout(cleanup, 100);
|
|
104
|
+
process.removeListener('SIGINT', cleanup);
|
|
105
|
+
process.removeListener('SIGTERM', cleanup);
|
|
106
|
+
reject(error);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
90
109
|
clearTimeout(timeout);
|
|
91
110
|
process.removeListener('SIGINT', cleanup);
|
|
92
111
|
process.removeListener('SIGTERM', cleanup);
|
|
@@ -146,14 +165,18 @@ async function runOAuthFlow(apiBase, attributionRef) {
|
|
|
146
165
|
authUrl += `&creator_ref=${encodeURIComponent(attributionRef)}`;
|
|
147
166
|
}
|
|
148
167
|
logger.info('Opening browser for Google sign-in...');
|
|
168
|
+
// Always print the link: open() resolves even when no browser exists
|
|
169
|
+
// (it spawns xdg-open detached), and an agent's shell may be on another
|
|
170
|
+
// machine than the user's browser.
|
|
171
|
+
logger.info(`If no browser opened, open this link to sign in:\n ${authUrl}`);
|
|
149
172
|
(0, open_1.default)(authUrl).catch(() => {
|
|
150
173
|
logger.warn(`Could not open browser. Please visit:\n ${authUrl}`);
|
|
151
174
|
});
|
|
152
175
|
});
|
|
153
176
|
const timeout = setTimeout(() => {
|
|
154
177
|
cleanup();
|
|
155
|
-
reject(new Error('
|
|
156
|
-
}, OAUTH_TIMEOUT_MS);
|
|
178
|
+
reject(new Error('Sign-in timed out after 5 minutes. If your browser is on a different device (cloud agent, SSH), run: gooseworks login --device'));
|
|
179
|
+
}, exports.OAUTH_TIMEOUT_MS);
|
|
157
180
|
const cleanup = () => {
|
|
158
181
|
clearTimeout(timeout);
|
|
159
182
|
server.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { OAuthResult } from './oauth-server';
|
|
2
|
+
export type PastedSignIn = {
|
|
3
|
+
kind: 'key';
|
|
4
|
+
key: string;
|
|
5
|
+
} | {
|
|
6
|
+
kind: 'callback';
|
|
7
|
+
token: string;
|
|
8
|
+
email: string;
|
|
9
|
+
agent_id: string;
|
|
10
|
+
api_base?: string;
|
|
11
|
+
scope_type?: 'agent' | 'user';
|
|
12
|
+
default_agent_id?: string;
|
|
13
|
+
mcp_server_url?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const NOT_A_SIGN_IN_MESSAGE = "That doesn't look like a GooseWorks sign-in address or key.";
|
|
16
|
+
/** Parses a pasted callback address (full URL or query only) or a raw `cal_` key. */
|
|
17
|
+
export declare function parsePastedSignIn(raw: string): PastedSignIn;
|
|
18
|
+
export interface PasteIo {
|
|
19
|
+
isTTY?: boolean;
|
|
20
|
+
prompt?: (question: string) => Promise<string>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Verifies a pasted address or key against the server, then saves it.
|
|
24
|
+
* No time limit: the pasted key is checked live instead.
|
|
25
|
+
*/
|
|
26
|
+
export declare function pasteLogin(value: string | undefined, apiBase: string, io?: PasteIo): Promise<OAuthResult>;
|
|
27
|
+
//# sourceMappingURL=paste-login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paste-login.d.ts","sourceRoot":"","sources":["../../src/auth/paste-login.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC5B;IACA,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEJ,eAAO,MAAM,qBAAqB,gEAAgE,CAAC;AAwCnG,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAyB3D;AAcD,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD;AAYD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAE,OAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAoEnH"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.NOT_A_SIGN_IN_MESSAGE = void 0;
|
|
37
|
+
exports.parsePastedSignIn = parsePastedSignIn;
|
|
38
|
+
exports.pasteLogin = pasteLogin;
|
|
39
|
+
/**
|
|
40
|
+
* `gooseworks login --paste` (GOOSE-3937) — a manual support fallback.
|
|
41
|
+
*
|
|
42
|
+
* When the browser lands on a localhost callback that can't reach the CLI
|
|
43
|
+
* ("localhost refused to connect"), the address bar still holds the full
|
|
44
|
+
* `/callback?token=…` URL. Pasting it (or a bare `cal_` key) here finishes
|
|
45
|
+
* sign-in. The key is always verified live before it is saved.
|
|
46
|
+
*/
|
|
47
|
+
const readline = __importStar(require("readline"));
|
|
48
|
+
const environment_1 = require("../environment");
|
|
49
|
+
const http_1 = require("../utils/http");
|
|
50
|
+
const credentials_1 = require("./credentials");
|
|
51
|
+
exports.NOT_A_SIGN_IN_MESSAGE = "That doesn't look like a GooseWorks sign-in address or key.";
|
|
52
|
+
const INVALID_KEY_MESSAGE = "That sign-in key isn't valid any more. Run gooseworks login again.";
|
|
53
|
+
const REQUEST_TIMEOUT_MS = 15_000;
|
|
54
|
+
function unwrap(raw) {
|
|
55
|
+
let value = raw.trim();
|
|
56
|
+
for (;;) {
|
|
57
|
+
const first = value[0];
|
|
58
|
+
const last = value[value.length - 1];
|
|
59
|
+
const wrapped = value.length >= 2 && ((first === '"' && last === '"') ||
|
|
60
|
+
(first === "'" && last === "'") ||
|
|
61
|
+
(first === '`' && last === '`') ||
|
|
62
|
+
(first === '<' && last === '>'));
|
|
63
|
+
if (!wrapped)
|
|
64
|
+
return value;
|
|
65
|
+
value = value.slice(1, -1).trim();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function queryOf(value) {
|
|
69
|
+
// Browsers often hide the scheme in the address bar.
|
|
70
|
+
const withScheme = /^(localhost|127\.0\.0\.1)(:\d+)?\//i.test(value) ? `http://${value}` : value;
|
|
71
|
+
if (/^[a-z][a-z0-9+.-]*:\/\//i.test(withScheme)) {
|
|
72
|
+
let url;
|
|
73
|
+
try {
|
|
74
|
+
url = new URL(withScheme);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
throw new Error(exports.NOT_A_SIGN_IN_MESSAGE);
|
|
78
|
+
}
|
|
79
|
+
if (!['localhost', '127.0.0.1'].includes(url.hostname) || url.pathname !== '/callback') {
|
|
80
|
+
throw new Error(exports.NOT_A_SIGN_IN_MESSAGE);
|
|
81
|
+
}
|
|
82
|
+
return url.searchParams;
|
|
83
|
+
}
|
|
84
|
+
if (value.startsWith('?'))
|
|
85
|
+
return new URLSearchParams(value.slice(1));
|
|
86
|
+
if (/(^|&)token=/.test(value))
|
|
87
|
+
return new URLSearchParams(value);
|
|
88
|
+
throw new Error(exports.NOT_A_SIGN_IN_MESSAGE);
|
|
89
|
+
}
|
|
90
|
+
/** Parses a pasted callback address (full URL or query only) or a raw `cal_` key. */
|
|
91
|
+
function parsePastedSignIn(raw) {
|
|
92
|
+
const value = unwrap(raw);
|
|
93
|
+
if (/^cal_\S+$/.test(value))
|
|
94
|
+
return { kind: 'key', key: value };
|
|
95
|
+
const params = queryOf(value);
|
|
96
|
+
const token = params.get('token');
|
|
97
|
+
const email = params.get('email');
|
|
98
|
+
const agentId = params.get('agent_id');
|
|
99
|
+
if (!token || !token.startsWith('cal_') || /\s/.test(token) || !email || !agentId) {
|
|
100
|
+
throw new Error(exports.NOT_A_SIGN_IN_MESSAGE);
|
|
101
|
+
}
|
|
102
|
+
const scopeType = params.get('scope_type');
|
|
103
|
+
const apiBase = params.get('api_base');
|
|
104
|
+
const defaultAgentId = params.get('default_agent_id');
|
|
105
|
+
const mcpServerUrl = params.get('mcp_server_url');
|
|
106
|
+
return {
|
|
107
|
+
kind: 'callback',
|
|
108
|
+
token,
|
|
109
|
+
email,
|
|
110
|
+
agent_id: agentId,
|
|
111
|
+
...(apiBase ? { api_base: apiBase } : {}),
|
|
112
|
+
...(scopeType === 'agent' || scopeType === 'user' ? { scope_type: scopeType } : {}),
|
|
113
|
+
...(defaultAgentId ? { default_agent_id: defaultAgentId } : {}),
|
|
114
|
+
...(mcpServerUrl ? { mcp_server_url: mcpServerUrl } : {}),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function defaultPrompt(question) {
|
|
118
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
119
|
+
return new Promise((resolve) => {
|
|
120
|
+
rl.question(question, (answer) => {
|
|
121
|
+
rl.close();
|
|
122
|
+
resolve(answer);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Verifies a pasted address or key against the server, then saves it.
|
|
128
|
+
* No time limit: the pasted key is checked live instead.
|
|
129
|
+
*/
|
|
130
|
+
async function pasteLogin(value, apiBase, io = {}) {
|
|
131
|
+
let raw = value;
|
|
132
|
+
if (raw === undefined || raw.trim() === '') {
|
|
133
|
+
const isTTY = io.isTTY ?? process.stdin.isTTY;
|
|
134
|
+
if (!isTTY)
|
|
135
|
+
throw new Error('Pass the address or key: gooseworks login --paste "<value>"');
|
|
136
|
+
raw = await (io.prompt ?? defaultPrompt)('Paste the address your browser showed (or your key): ');
|
|
137
|
+
}
|
|
138
|
+
const parsed = parsePastedSignIn(raw);
|
|
139
|
+
const base = (parsed.kind === 'callback' && parsed.api_base ? parsed.api_base : apiBase).replace(/\/+$/, '');
|
|
140
|
+
(0, environment_1.assertConnection)(base, 'api');
|
|
141
|
+
const key = parsed.kind === 'key' ? parsed.key : parsed.token;
|
|
142
|
+
let creds;
|
|
143
|
+
try {
|
|
144
|
+
const res = await (0, http_1.requestJson)({ apiBase: base, apiKey: key, path: '/api/cli/auth/whoami', timeoutMs: REQUEST_TIMEOUT_MS });
|
|
145
|
+
const who = res?.data;
|
|
146
|
+
if (!who || typeof who.email !== 'string' || !who.email || typeof who.agent_id !== 'string' || !who.agent_id) {
|
|
147
|
+
throw new Error('The server did not confirm this sign-in. Run gooseworks login again.');
|
|
148
|
+
}
|
|
149
|
+
const fromUrl = parsed.kind === 'callback' ? parsed : undefined;
|
|
150
|
+
const scopeType = who.scope_type === 'agent' || who.scope_type === 'user' ? who.scope_type : fromUrl?.scope_type;
|
|
151
|
+
const defaultAgentId = who.default_agent_id || fromUrl?.default_agent_id;
|
|
152
|
+
const mcpServerUrl = who.mcp_server_url || fromUrl?.mcp_server_url;
|
|
153
|
+
creds = {
|
|
154
|
+
api_key: key,
|
|
155
|
+
email: who.email,
|
|
156
|
+
agent_id: who.agent_id,
|
|
157
|
+
api_base: base,
|
|
158
|
+
...(scopeType ? { scope_type: scopeType } : {}),
|
|
159
|
+
...(defaultAgentId ? { default_agent_id: defaultAgentId } : {}),
|
|
160
|
+
...(mcpServerUrl ? { mcp_server_url: mcpServerUrl } : {}),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
if (!(err instanceof http_1.HttpError))
|
|
165
|
+
throw err;
|
|
166
|
+
if (err.status === 401)
|
|
167
|
+
throw new Error(INVALID_KEY_MESSAGE);
|
|
168
|
+
if (err.status !== 404)
|
|
169
|
+
throw err;
|
|
170
|
+
// Older server without /whoami.
|
|
171
|
+
if (parsed.kind === 'key') {
|
|
172
|
+
throw new Error("This server can't check a bare key yet. Paste the full address from your browser instead.");
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
await (0, http_1.requestJson)({ apiBase: base, apiKey: key, path: '/v1/credits', timeoutMs: REQUEST_TIMEOUT_MS });
|
|
176
|
+
}
|
|
177
|
+
catch (creditsErr) {
|
|
178
|
+
if (creditsErr instanceof http_1.HttpError && creditsErr.status === 401)
|
|
179
|
+
throw new Error(INVALID_KEY_MESSAGE);
|
|
180
|
+
throw creditsErr;
|
|
181
|
+
}
|
|
182
|
+
creds = {
|
|
183
|
+
api_key: key,
|
|
184
|
+
email: parsed.email,
|
|
185
|
+
agent_id: parsed.agent_id,
|
|
186
|
+
api_base: base,
|
|
187
|
+
...(parsed.scope_type ? { scope_type: parsed.scope_type } : {}),
|
|
188
|
+
...(parsed.default_agent_id ? { default_agent_id: parsed.default_agent_id } : {}),
|
|
189
|
+
...(parsed.mcp_server_url ? { mcp_server_url: parsed.mcp_server_url } : {}),
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
(0, credentials_1.validateCredentials)(creds);
|
|
193
|
+
(0, credentials_1.saveCredentials)(creds);
|
|
194
|
+
return {
|
|
195
|
+
api_key: creds.api_key,
|
|
196
|
+
email: creds.email,
|
|
197
|
+
agent_id: creds.agent_id,
|
|
198
|
+
...(creds.scope_type ? { scope_type: creds.scope_type } : {}),
|
|
199
|
+
...(creds.default_agent_id ? { default_agent_id: creds.default_agent_id } : {}),
|
|
200
|
+
...(creds.mcp_server_url ? { mcp_server_url: creds.mcp_server_url } : {}),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=paste-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paste-login.js","sourceRoot":"","sources":["../../src/auth/paste-login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
export interface DoctorCheck {
|
|
3
|
+
id: 'login' | 'mcp' | 'node' | 'ffmpeg' | 'ffprobe' | 'chromium';
|
|
4
|
+
label: string;
|
|
5
|
+
ok: boolean;
|
|
6
|
+
/** What to run when the check fails. */
|
|
7
|
+
fix: string;
|
|
8
|
+
/** What was actually found, for the human and for `--json`. */
|
|
9
|
+
detail?: string;
|
|
10
|
+
/** Browser diagnostics identify the package actually probed. */
|
|
11
|
+
code?: string;
|
|
12
|
+
rendererScript?: string;
|
|
13
|
+
modulePath?: string;
|
|
14
|
+
version?: string;
|
|
15
|
+
executablePath?: string;
|
|
16
|
+
}
|
|
2
17
|
/**
|
|
3
|
-
* `gooseworks doctor
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* is missing so the agent's Phase-0 preflight can relay the fix and stop.
|
|
18
|
+
* The checks behind `gooseworks doctor`, reusable by `install` and by anything
|
|
19
|
+
* that wants common machine checks. An explicit renderer script verifies that
|
|
20
|
+
* renderer's Playwright, not a package belonging to the calling project.
|
|
21
|
+
* No download or ad render. Browser startup uses normal runtime temp files.
|
|
8
22
|
*/
|
|
23
|
+
export declare function runDoctorChecks(opts?: {
|
|
24
|
+
includeAuth?: boolean;
|
|
25
|
+
includeBrowser?: boolean;
|
|
26
|
+
rendererScript?: string;
|
|
27
|
+
}): DoctorCheck[];
|
|
28
|
+
/**
|
|
29
|
+
* General setup is not certification for an unfetched renderer. The selected
|
|
30
|
+
* renderer must pass its own free launch check before paid ingredients.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createDoctorCommand(): Command;
|
|
9
33
|
export declare const doctorCommand: Command;
|
|
10
34
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4CpC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,EAAE,CAsCtI;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CA+C7C;AAED,eAAO,MAAM,aAAa,SAAwB,CAAC"}
|