@alwaysmeticulous/cli 2.331.3 → 2.333.0
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 +16 -0
- package/dist/commands/onboard/__tests__/print-next-steps.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/print-next-steps.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/print-next-steps.spec.js +67 -0
- package/dist/commands/onboard/__tests__/print-next-steps.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/resolve-project.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/resolve-project.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/resolve-project.spec.js +44 -0
- package/dist/commands/onboard/__tests__/resolve-project.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/skills-install-choice.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/skills-install-choice.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/skills-install-choice.spec.js +51 -0
- package/dist/commands/onboard/__tests__/skills-install-choice.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/validate-ci-yaml.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/validate-ci-yaml.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/validate-ci-yaml.spec.js +112 -0
- package/dist/commands/onboard/__tests__/validate-ci-yaml.spec.js.map +1 -0
- package/dist/commands/onboard/build-context.d.ts +1 -0
- package/dist/commands/onboard/build-context.d.ts.map +1 -1
- package/dist/commands/onboard/build-context.js +6 -6
- package/dist/commands/onboard/build-context.js.map +1 -1
- package/dist/commands/onboard/customer-agents.json +0 -1
- package/dist/commands/onboard/customer-docs.json +1 -0
- package/dist/commands/onboard/docs-urls.d.ts +2 -0
- package/dist/commands/onboard/docs-urls.d.ts.map +1 -1
- package/dist/commands/onboard/docs-urls.js +5 -3
- package/dist/commands/onboard/docs-urls.js.map +1 -1
- package/dist/commands/onboard/index.d.ts.map +1 -1
- package/dist/commands/onboard/index.js +8 -6
- package/dist/commands/onboard/index.js.map +1 -1
- package/dist/commands/onboard/launch-agent.d.ts +1 -0
- package/dist/commands/onboard/launch-agent.d.ts.map +1 -1
- package/dist/commands/onboard/launch-agent.js +26 -15
- package/dist/commands/onboard/launch-agent.js.map +1 -1
- package/dist/commands/onboard/resolve-project.d.ts +9 -1
- package/dist/commands/onboard/resolve-project.d.ts.map +1 -1
- package/dist/commands/onboard/resolve-project.js +26 -4
- package/dist/commands/onboard/resolve-project.js.map +1 -1
- package/dist/commands/onboard/setup-agent-integrations.d.ts +2 -1
- package/dist/commands/onboard/setup-agent-integrations.d.ts.map +1 -1
- package/dist/commands/onboard/setup-agent-integrations.js +32 -7
- package/dist/commands/onboard/setup-agent-integrations.js.map +1 -1
- package/dist/commands/onboard/templates/CLAUDE.md +22 -9
- package/dist/commands/onboard/templates/agents/ci-setup.md +28 -0
- package/dist/commands/onboard/templates/agents/recorder-installation.md +6 -0
- package/dist/commands/onboard/templates/docs/ci.ts +2 -6
- package/dist/commands/onboard/templates/docs/github-actions-v2.ts +43 -37
- package/dist/commands/onboard/templates/docs/how-to/connect-git-provider.ts +26 -0
- package/dist/commands/onboard/templates/docs/how-to/typescript-types.ts +1 -1
- package/dist/commands/onboard/templates/docs/onboarding-guide.ts +77 -356
- package/dist/commands/onboard/templates/docs/recorder-getting-started.ts +5 -2
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/nuxtjs-instructions.ts +1 -1
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/rsbuild-instructions.ts +1 -1
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/vite-instructions.ts +1 -1
- package/dist/commands/onboard/templates/docs/reference/cli-commands.ts +37 -0
- package/dist/commands/onboard/validate-ci-yaml.d.ts +22 -0
- package/dist/commands/onboard/validate-ci-yaml.d.ts.map +1 -0
- package/dist/commands/onboard/validate-ci-yaml.js +113 -0
- package/dist/commands/onboard/validate-ci-yaml.js.map +1 -0
- package/package.json +14 -13
- package/dist/commands/onboard/templates/agents/local-simulation-verification.md +0 -96
package/README.md
CHANGED
|
@@ -26,6 +26,21 @@ npm install --save-dev @alwaysmeticulous/cli
|
|
|
26
26
|
|
|
27
27
|
## Quick Start
|
|
28
28
|
|
|
29
|
+
To install Meticulous in an application repository, connect the repository to a
|
|
30
|
+
Meticulous project first, then run:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx @alwaysmeticulous/cli onboard --project="<ORGANIZATION>/<PROJECT>"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If you are not logged in, `onboard` opens a browser to sign in. On a remote
|
|
37
|
+
machine, run `npx @alwaysmeticulous/cli auth login --device` first.
|
|
38
|
+
|
|
39
|
+
`onboard` uses your local Claude Code or Codex account to prepare a pull request
|
|
40
|
+
with the recorder and CI configuration. See the
|
|
41
|
+
[Onboarding Guide](https://app.meticulous.ai/docs/onboarding-guide) for GitHub,
|
|
42
|
+
GitLab, and Bitbucket connection instructions and the manual alternative.
|
|
43
|
+
|
|
29
44
|
Sessions are recordings of user interactions with your application that Meticulous can replay to test for regressions.
|
|
30
45
|
|
|
31
46
|
### 1. Record a Session
|
|
@@ -61,6 +76,7 @@ Run `npx @alwaysmeticulous/cli --help` to see all available commands.
|
|
|
61
76
|
|
|
62
77
|
Common commands:
|
|
63
78
|
|
|
79
|
+
- `onboard` - Install the recorder and CI configuration using Claude Code or Codex
|
|
64
80
|
- `record` - Record a new session
|
|
65
81
|
- `simulate` - Simulate a recorded session locally
|
|
66
82
|
- `run-all-tests` - Run all replay test cases
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-next-steps.spec.d.ts","sourceRoot":"","sources":["../../../../src/commands/onboard/__tests__/print-next-steps.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0dd0c50b-055a-5cb8-86e3-b69337f7bc36")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const launch_agent_1 = require("../launch-agent");
|
|
7
|
+
const baseContext = {
|
|
8
|
+
orgAndProject: "acme/web app",
|
|
9
|
+
meticulousSideSetupPath: "/tmp/missing-setup.md",
|
|
10
|
+
meticulousTokensUrl: "https://app.meticulous.ai/projects/acme/web%20app?tab=settings§ion=tokens",
|
|
11
|
+
meticulousSessionsUrl: "https://app.meticulous.ai/projects/acme/web%20app?tab=sessions",
|
|
12
|
+
secretsUrl: "https://github.com/acme/web/settings/secrets/actions",
|
|
13
|
+
secretsUrlLabel: "GitHub Actions secrets",
|
|
14
|
+
githubConfigureProjectsUrl: null,
|
|
15
|
+
gitlabConfigureProjectsUrl: null,
|
|
16
|
+
bitbucketConfigureProjectsUrl: null,
|
|
17
|
+
isGitHubIntegrationActive: true,
|
|
18
|
+
isGitLabIntegrationActive: null,
|
|
19
|
+
isBitbucketIntegrationActive: null,
|
|
20
|
+
ciProvider: "github-actions",
|
|
21
|
+
};
|
|
22
|
+
(0, vitest_1.describe)("printNextSteps", () => {
|
|
23
|
+
(0, vitest_1.afterEach)(() => {
|
|
24
|
+
vitest_1.vi.restoreAllMocks();
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.it)("tells the user to click around locally and confirm a session appears", () => {
|
|
27
|
+
const log = vitest_1.vi.spyOn(console, "log").mockImplementation(() => undefined);
|
|
28
|
+
(0, launch_agent_1.printNextSteps)({ tool: "claude", context: baseContext });
|
|
29
|
+
const output = log.mock.calls.flat().join("\n");
|
|
30
|
+
(0, vitest_1.expect)(output).toContain("start your local app with the recording token set");
|
|
31
|
+
(0, vitest_1.expect)(output).toContain("click around");
|
|
32
|
+
(0, vitest_1.expect)(output).toContain(baseContext.meticulousSessionsUrl);
|
|
33
|
+
(0, vitest_1.expect)(output).toContain(baseContext.secretsUrl);
|
|
34
|
+
(0, vitest_1.expect)(output).not.toContain("simulate");
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.it)("prints the whole tokens url on both token steps", () => {
|
|
37
|
+
const log = vitest_1.vi.spyOn(console, "log").mockImplementation(() => undefined);
|
|
38
|
+
(0, launch_agent_1.printNextSteps)({ tool: "claude", context: baseContext });
|
|
39
|
+
const output = stripAnsi(log.mock.calls.flat().join("\n"));
|
|
40
|
+
const tokenSteps = output
|
|
41
|
+
.split("\n")
|
|
42
|
+
.filter((line) => line.includes("token from"));
|
|
43
|
+
(0, vitest_1.expect)(tokenSteps).toHaveLength(2);
|
|
44
|
+
for (const step of tokenSteps) {
|
|
45
|
+
(0, vitest_1.expect)(step).toContain(`from ${baseContext.meticulousTokensUrl} and`);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)("still points at a full url when the project is unknown", () => {
|
|
49
|
+
const log = vitest_1.vi.spyOn(console, "log").mockImplementation(() => undefined);
|
|
50
|
+
(0, launch_agent_1.printNextSteps)({
|
|
51
|
+
tool: "claude",
|
|
52
|
+
context: {
|
|
53
|
+
...baseContext,
|
|
54
|
+
orgAndProject: null,
|
|
55
|
+
meticulousTokensUrl: null,
|
|
56
|
+
meticulousSessionsUrl: null,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
const output = stripAnsi(log.mock.calls.flat().join("\n"));
|
|
60
|
+
(0, vitest_1.expect)(output).toContain("https://app.meticulous.ai (your project → Settings → Tokens)");
|
|
61
|
+
(0, vitest_1.expect)(output).toContain("https://app.meticulous.ai (your project → Sessions)");
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
const ANSI_COLOR = new RegExp(`${String.fromCharCode(27)}\\[\\d+m`, "g");
|
|
65
|
+
const stripAnsi = (value) => value.replace(ANSI_COLOR, "");
|
|
66
|
+
//# sourceMappingURL=print-next-steps.spec.js.map
|
|
67
|
+
//# debugId=0dd0c50b-055a-5cb8-86e3-b69337f7bc36
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-next-steps.spec.js","sources":["../../../../src/commands/onboard/__tests__/print-next-steps.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"0dd0c50b-055a-5cb8-86e3-b69337f7bc36"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-project.spec.d.ts","sourceRoot":"","sources":["../../../../src/commands/onboard/__tests__/resolve-project.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7973c24f-c644-5006-a960-7ccad06b6bc4")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const cli_user_error_1 = require("../../../utils/cli-user-error");
|
|
7
|
+
const resolve_project_1 = require("../resolve-project");
|
|
8
|
+
const mocks = vitest_1.vi.hoisted(() => ({
|
|
9
|
+
isInteractive: vitest_1.vi.fn(() => false),
|
|
10
|
+
getAuthToken: vitest_1.vi.fn(),
|
|
11
|
+
performOAuthLogin: vitest_1.vi.fn(),
|
|
12
|
+
}));
|
|
13
|
+
vitest_1.vi.mock("@alwaysmeticulous/client", async (importOriginal) => ({
|
|
14
|
+
...(await importOriginal()),
|
|
15
|
+
CLI_LOGIN_INTENT_ONBOARD: "onboard",
|
|
16
|
+
isInteractiveContext: () => mocks.isInteractive(),
|
|
17
|
+
getAuthToken: mocks.getAuthToken,
|
|
18
|
+
performOAuthLogin: mocks.performOAuthLogin,
|
|
19
|
+
}));
|
|
20
|
+
(0, vitest_1.describe)("ensureOnboardAuthenticated", () => {
|
|
21
|
+
(0, vitest_1.beforeEach)(() => {
|
|
22
|
+
mocks.isInteractive.mockReturnValue(false);
|
|
23
|
+
mocks.getAuthToken.mockReset();
|
|
24
|
+
mocks.performOAuthLogin.mockReset();
|
|
25
|
+
mocks.getAuthToken.mockResolvedValue(null);
|
|
26
|
+
mocks.performOAuthLogin.mockResolvedValue({ accessToken: "jwt" });
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)("does nothing when a token is already present", async () => {
|
|
29
|
+
mocks.getAuthToken.mockResolvedValue("existing-token");
|
|
30
|
+
await (0, resolve_project_1.ensureOnboardAuthenticated)(undefined);
|
|
31
|
+
(0, vitest_1.expect)(mocks.performOAuthLogin).not.toHaveBeenCalled();
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.it)("errors in a non-interactive terminal instead of continuing unauthenticated", async () => {
|
|
34
|
+
await (0, vitest_1.expect)((0, resolve_project_1.ensureOnboardAuthenticated)(undefined)).rejects.toBeInstanceOf(cli_user_error_1.CliUserError);
|
|
35
|
+
(0, vitest_1.expect)(mocks.performOAuthLogin).not.toHaveBeenCalled();
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.it)("opens an onboard-tagged browser login when interactive and logged out", async () => {
|
|
38
|
+
mocks.isInteractive.mockReturnValue(true);
|
|
39
|
+
await (0, resolve_project_1.ensureOnboardAuthenticated)(undefined);
|
|
40
|
+
(0, vitest_1.expect)(mocks.performOAuthLogin).toHaveBeenCalledWith({ intent: "onboard" });
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=resolve-project.spec.js.map
|
|
44
|
+
//# debugId=7973c24f-c644-5006-a960-7ccad06b6bc4
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-project.spec.js","sources":["../../../../src/commands/onboard/__tests__/resolve-project.spec.ts"],"sourceRoot":"","names":[],"mappings":";;;;AACA,mCAA8D;AAC9D,kEAA6D;AAC7D,wDAAgE;AAEhE,MAAM,KAAK,GAAG,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,aAAa,EAAE,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;IACjC,YAAY,EAAE,WAAE,CAAC,EAAE,EAAE;IACrB,iBAAiB,EAAE,WAAE,CAAC,EAAE,EAAE;CAC3B,CAAC,CAAC,CAAC;AAEJ,WAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAC7D,GAAG,CAAC,MAAM,cAAc,EAAiC,CAAC;IAC1D,wBAAwB,EAAE,SAAS;IACnC,oBAAoB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE;IACjD,YAAY,EAAE,KAAK,CAAC,YAAY;IAChC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;CAC3C,CAAC,CAAC,CAAC;AAEJ,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;QACpC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAEvD,MAAM,IAAA,4CAA0B,EAAC,SAAS,CAAC,CAAC;QAE5C,IAAA,eAAM,EAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,IAAA,eAAM,EAAC,IAAA,4CAA0B,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACxE,6BAAY,CACb,CAAC;QACF,IAAA,eAAM,EAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE1C,MAAM,IAAA,4CAA0B,EAAC,SAAS,CAAC,CAAC;QAE5C,IAAA,eAAM,EAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","debugId":"7973c24f-c644-5006-a960-7ccad06b6bc4"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-install-choice.spec.d.ts","sourceRoot":"","sources":["../../../../src/commands/onboard/__tests__/skills-install-choice.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="198680a8-b480-511c-8750-616fd686b4f3")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const docs_urls_1 = require("../docs-urls");
|
|
7
|
+
const setup_agent_integrations_1 = require("../setup-agent-integrations");
|
|
8
|
+
const isInteractive = vitest_1.vi.fn(() => false);
|
|
9
|
+
const promptForConfirmation = vitest_1.vi.fn();
|
|
10
|
+
vitest_1.vi.mock("@alwaysmeticulous/client", async (importOriginal) => ({
|
|
11
|
+
...(await importOriginal()),
|
|
12
|
+
isInteractiveContext: () => isInteractive(),
|
|
13
|
+
}));
|
|
14
|
+
vitest_1.vi.mock("inquirer", () => ({
|
|
15
|
+
default: { prompt: (...args) => promptForConfirmation(...args) },
|
|
16
|
+
}));
|
|
17
|
+
(0, vitest_1.describe)("confirmSkillsInstall", () => {
|
|
18
|
+
let log;
|
|
19
|
+
(0, vitest_1.beforeEach)(() => {
|
|
20
|
+
isInteractive.mockReturnValue(false);
|
|
21
|
+
promptForConfirmation.mockReset();
|
|
22
|
+
log = vitest_1.vi.spyOn(console, "log").mockImplementation(() => undefined);
|
|
23
|
+
});
|
|
24
|
+
(0, vitest_1.afterEach)(() => {
|
|
25
|
+
log.mockRestore();
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)("preserves automatic installation in non-interactive runs", async () => {
|
|
28
|
+
await (0, vitest_1.expect)((0, setup_agent_integrations_1.confirmSkillsInstall)()).resolves.toBe(true);
|
|
29
|
+
(0, vitest_1.expect)(promptForConfirmation).not.toHaveBeenCalled();
|
|
30
|
+
});
|
|
31
|
+
(0, vitest_1.it)("explains the skills and links to the agent introduction", async () => {
|
|
32
|
+
isInteractive.mockReturnValue(true);
|
|
33
|
+
promptForConfirmation.mockResolvedValue({ installSkills: true });
|
|
34
|
+
await (0, vitest_1.expect)((0, setup_agent_integrations_1.confirmSkillsInstall)()).resolves.toBe(true);
|
|
35
|
+
(0, vitest_1.expect)(log.mock.calls.flat().join("\n")).toContain(docs_urls_1.AGENTS_SETUP_DOCS_URL);
|
|
36
|
+
(0, vitest_1.expect)(promptForConfirmation).toHaveBeenCalledWith([
|
|
37
|
+
vitest_1.expect.objectContaining({
|
|
38
|
+
type: "confirm",
|
|
39
|
+
name: "installSkills",
|
|
40
|
+
default: true,
|
|
41
|
+
}),
|
|
42
|
+
]);
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.it)("returns false when the user declines", async () => {
|
|
45
|
+
isInteractive.mockReturnValue(true);
|
|
46
|
+
promptForConfirmation.mockResolvedValue({ installSkills: false });
|
|
47
|
+
await (0, vitest_1.expect)((0, setup_agent_integrations_1.confirmSkillsInstall)()).resolves.toBe(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=skills-install-choice.spec.js.map
|
|
51
|
+
//# debugId=198680a8-b480-511c-8750-616fd686b4f3
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-install-choice.spec.js","sources":["../../../../src/commands/onboard/__tests__/skills-install-choice.spec.ts"],"sourceRoot":"","names":[],"mappings":";;;;AACA,mCAAyE;AACzE,4CAAqD;AACrD,0EAAmE;AAEnE,MAAM,aAAa,GAAG,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACzC,MAAM,qBAAqB,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;AAEtC,WAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAC7D,GAAG,CAAC,MAAM,cAAc,EAAiC,CAAC;IAC1D,oBAAoB,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE;CAC5C,CAAC,CAAC,CAAC;AAEJ,WAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACzB,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC,EAAE;CAC5E,CAAC,CAAC,CAAC;AAEJ,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,GAAgC,CAAC;IAErC,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,qBAAqB,CAAC,SAAS,EAAE,CAAC;QAClC,GAAG,GAAG,WAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,GAAG,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,IAAA,eAAM,EAAC,IAAA,+CAAoB,GAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjE,MAAM,IAAA,eAAM,EAAC,IAAA,+CAAoB,GAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzD,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,iCAAqB,CAAC,CAAC;QAC1E,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC;YACjD,eAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,IAAI;aACd,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAElE,MAAM,IAAA,eAAM,EAAC,IAAA,+CAAoB,GAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","debugId":"198680a8-b480-511c-8750-616fd686b4f3"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-ci-yaml.spec.d.ts","sourceRoot":"","sources":["../../../../src/commands/onboard/__tests__/validate-ci-yaml.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3d76cebe-c11f-5304-bca8-0a191aa2af58")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const os_1 = require("os");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const vitest_1 = require("vitest");
|
|
9
|
+
const validate_ci_yaml_1 = require("../validate-ci-yaml");
|
|
10
|
+
const roots = [];
|
|
11
|
+
const makeRepo = (files) => {
|
|
12
|
+
const root = (0, fs_1.realpathSync)((0, fs_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), "onboard-ci-yaml-")));
|
|
13
|
+
roots.push(root);
|
|
14
|
+
for (const [path, contents] of Object.entries(files)) {
|
|
15
|
+
const absolutePath = (0, path_1.join)(root, path);
|
|
16
|
+
(0, fs_1.mkdirSync)((0, path_1.dirname)(absolutePath), { recursive: true });
|
|
17
|
+
(0, fs_1.writeFileSync)(absolutePath, contents);
|
|
18
|
+
}
|
|
19
|
+
return root;
|
|
20
|
+
};
|
|
21
|
+
const VALID_WORKFLOW = `name: Meticulous
|
|
22
|
+
on:
|
|
23
|
+
pull_request:
|
|
24
|
+
jobs:
|
|
25
|
+
meticulous:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
steps:
|
|
28
|
+
- uses: alwaysmeticulous/report-diffs-action/cloud-compute@v1
|
|
29
|
+
`;
|
|
30
|
+
(0, vitest_1.afterEach)(() => {
|
|
31
|
+
vitest_1.vi.restoreAllMocks();
|
|
32
|
+
for (const root of roots.splice(0)) {
|
|
33
|
+
(0, fs_1.rmSync)(root, { recursive: true, force: true });
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.describe)("findInvalidCiYaml", () => {
|
|
37
|
+
(0, vitest_1.it)("accepts a valid Meticulous workflow", () => {
|
|
38
|
+
const root = makeRepo({
|
|
39
|
+
".github/workflows/meticulous.yml": VALID_WORKFLOW,
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.expect)((0, validate_ci_yaml_1.findInvalidCiYaml)({ projectRoot: root })).toEqual([]);
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)("reports a duplicated key with its line", () => {
|
|
44
|
+
const root = makeRepo({
|
|
45
|
+
".github/workflows/meticulous.yml": `${VALID_WORKFLOW} meticulous:\n runs-on: ubuntu-latest\n`,
|
|
46
|
+
});
|
|
47
|
+
const [invalid, ...rest] = (0, validate_ci_yaml_1.findInvalidCiYaml)({ projectRoot: root });
|
|
48
|
+
(0, vitest_1.expect)(rest).toEqual([]);
|
|
49
|
+
(0, vitest_1.expect)(invalid?.relativePath).toBe((0, path_1.join)(".github", "workflows", "meticulous.yml"));
|
|
50
|
+
(0, vitest_1.expect)(invalid?.problem).toContain("Map keys must be unique");
|
|
51
|
+
(0, vitest_1.expect)(invalid?.problem).toContain("line 9");
|
|
52
|
+
// The parser's source excerpt is dropped, so this stays one printable line.
|
|
53
|
+
(0, vitest_1.expect)(invalid?.problem).not.toContain("\n");
|
|
54
|
+
});
|
|
55
|
+
// The real failure this check was added for: GitHub Actions rejected a
|
|
56
|
+
// generated workflow because a `run:` command carried an unquoted `: `.
|
|
57
|
+
(0, vitest_1.it)("catches a run command whose shell string contains a colon", () => {
|
|
58
|
+
const root = makeRepo({
|
|
59
|
+
".github/workflows/meticulous-hub3.yml": `${VALID_WORKFLOW} - name: Configure Yarn node linker\n run: echo 'nodeLinker: node-modules' > .yarnrc.yml\n`,
|
|
60
|
+
});
|
|
61
|
+
const [invalid] = (0, validate_ci_yaml_1.findInvalidCiYaml)({ projectRoot: root });
|
|
62
|
+
(0, vitest_1.expect)(invalid?.problem).toContain("Nested mappings are not allowed in compact mappings");
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.it)("accepts the same command written as a block scalar", () => {
|
|
65
|
+
const root = makeRepo({
|
|
66
|
+
".github/workflows/meticulous-hub3.yml": `${VALID_WORKFLOW} - name: Configure Yarn node linker\n run: |\n echo 'nodeLinker: node-modules' > .yarnrc.yml\n`,
|
|
67
|
+
});
|
|
68
|
+
(0, vitest_1.expect)((0, validate_ci_yaml_1.findInvalidCiYaml)({ projectRoot: root })).toEqual([]);
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.it)("checks GitLab and Bitbucket pipeline files too", () => {
|
|
71
|
+
const root = makeRepo({
|
|
72
|
+
".gitlab-ci.yml": "meticulous:\n\tscript: npx meticulous\n",
|
|
73
|
+
"bitbucket-pipelines.yml": "pipelines:\n default:\n - step: {script: [npx meticulous}\n",
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.expect)((0, validate_ci_yaml_1.findInvalidCiYaml)({ projectRoot: root }).map((file) => file.relativePath)).toEqual([".gitlab-ci.yml", "bitbucket-pipelines.yml"]);
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.it)("ignores broken CI files that have nothing to do with Meticulous", () => {
|
|
78
|
+
const root = makeRepo({
|
|
79
|
+
".github/workflows/tests.yml": "jobs:\n\ttest: broken\n",
|
|
80
|
+
".github/workflows/meticulous.yml": VALID_WORKFLOW,
|
|
81
|
+
});
|
|
82
|
+
(0, vitest_1.expect)((0, validate_ci_yaml_1.findInvalidCiYaml)({ projectRoot: root })).toEqual([]);
|
|
83
|
+
});
|
|
84
|
+
(0, vitest_1.it)("ignores files that are not YAML and repos with no CI at all", () => {
|
|
85
|
+
const root = makeRepo({
|
|
86
|
+
".github/workflows/README.md": "meticulous: [",
|
|
87
|
+
"package.json": "{}",
|
|
88
|
+
});
|
|
89
|
+
(0, vitest_1.expect)((0, validate_ci_yaml_1.findInvalidCiYaml)({ projectRoot: root })).toEqual([]);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
(0, vitest_1.describe)("warnAboutInvalidCiYaml", () => {
|
|
93
|
+
(0, vitest_1.it)("names each broken file and stays silent otherwise", () => {
|
|
94
|
+
const log = vitest_1.vi.spyOn(console, "log").mockImplementation(() => undefined);
|
|
95
|
+
const brokenRoot = makeRepo({
|
|
96
|
+
".github/workflows/meticulous.yml": "jobs:\n\tmeticulous: broken\n",
|
|
97
|
+
});
|
|
98
|
+
(0, validate_ci_yaml_1.warnAboutInvalidCiYaml)({ projectRoot: brokenRoot });
|
|
99
|
+
const output = log.mock.calls.flat().join("\n");
|
|
100
|
+
(0, vitest_1.expect)(output).toContain((0, path_1.join)(".github", "workflows", "meticulous.yml"));
|
|
101
|
+
(0, vitest_1.expect)(output).toContain("Fix these before merging");
|
|
102
|
+
log.mockClear();
|
|
103
|
+
(0, validate_ci_yaml_1.warnAboutInvalidCiYaml)({
|
|
104
|
+
projectRoot: makeRepo({
|
|
105
|
+
".github/workflows/meticulous.yml": VALID_WORKFLOW,
|
|
106
|
+
}),
|
|
107
|
+
});
|
|
108
|
+
(0, vitest_1.expect)(log).not.toHaveBeenCalled();
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=validate-ci-yaml.spec.js.map
|
|
112
|
+
//# debugId=3d76cebe-c11f-5304-bca8-0a191aa2af58
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-ci-yaml.spec.js","sources":["../../../../src/commands/onboard/__tests__/validate-ci-yaml.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"3d76cebe-c11f-5304-bca8-0a191aa2af58"}
|
|
@@ -2,6 +2,7 @@ import type { Project } from "@alwaysmeticulous/api";
|
|
|
2
2
|
import type { FrameworkDetection } from "./detect-framework";
|
|
3
3
|
import { type DiscoveredApp } from "./discover-apps";
|
|
4
4
|
import { type OnboardContextJson } from "./materialize-workspace";
|
|
5
|
+
export declare const METICULOUS_APP_URL = "https://app.meticulous.ai";
|
|
5
6
|
/**
|
|
6
7
|
* Assembles the onboard-context.json payload handed to the install agent, from
|
|
7
8
|
* the resolved Meticulous project plus locally detected repo/app/framework info.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-context.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/build-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"build-context.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/build-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YAAa;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,aAAa,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,kBAAkB,CAAC;CACxC,KAAG,kBAgDH,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5e42ee51-2da4-55a3-8e42-3ecb78061c6a")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.buildOnboardContext = void 0;
|
|
5
|
+
exports.buildOnboardContext = exports.METICULOUS_APP_URL = void 0;
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
const git_repo_info_1 = require("./git-repo-info");
|
|
8
8
|
const discover_apps_1 = require("./discover-apps");
|
|
9
9
|
const materialize_workspace_1 = require("./materialize-workspace");
|
|
10
|
-
|
|
10
|
+
exports.METICULOUS_APP_URL = "https://app.meticulous.ai";
|
|
11
11
|
/**
|
|
12
12
|
* Assembles the onboard-context.json payload handed to the install agent, from
|
|
13
13
|
* the resolved Meticulous project plus locally detected repo/app/framework info.
|
|
@@ -55,10 +55,10 @@ const optionalBool = (value) => value === undefined ? null : value;
|
|
|
55
55
|
const buildDashboardUrls = (options) => {
|
|
56
56
|
const { organizationName, projectName } = options;
|
|
57
57
|
const projectPath = organizationName && projectName
|
|
58
|
-
? `${METICULOUS_APP_URL}/projects/${encodeURIComponent(organizationName)}/${encodeURIComponent(projectName)}`
|
|
58
|
+
? `${exports.METICULOUS_APP_URL}/projects/${encodeURIComponent(organizationName)}/${encodeURIComponent(projectName)}`
|
|
59
59
|
: null;
|
|
60
60
|
const orgPath = organizationName
|
|
61
|
-
? `${METICULOUS_APP_URL}/organizations/${encodeURIComponent(organizationName)}`
|
|
61
|
+
? `${exports.METICULOUS_APP_URL}/organizations/${encodeURIComponent(organizationName)}`
|
|
62
62
|
: null;
|
|
63
63
|
return {
|
|
64
64
|
meticulousSettingsUrl: projectPath ? `${projectPath}?tab=settings` : null,
|
|
@@ -101,4 +101,4 @@ const buildSecretsLocation = (options) => {
|
|
|
101
101
|
return { secretsUrl: null, secretsUrlLabel: null };
|
|
102
102
|
};
|
|
103
103
|
//# sourceMappingURL=build-context.js.map
|
|
104
|
-
//# debugId=
|
|
104
|
+
//# debugId=5e42ee51-2da4-55a3-8e42-3ecb78061c6a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-context.js","sources":["../../../src/commands/onboard/build-context.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,+BAA4B;AAE5B,mDAIyB;AAEzB,mDAA2E;AAC3E,mEAIiC;
|
|
1
|
+
{"version":3,"file":"build-context.js","sources":["../../../src/commands/onboard/build-context.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"5e42ee51-2da4-55a3-8e42-3ecb78061c6a"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
export declare const METICULOUS_DOCS_BASE_URL = "https://app.meticulous.ai/docs";
|
|
7
7
|
/** Host that must be fetchable for the agent to read the docs above. */
|
|
8
8
|
export declare const METICULOUS_DOCS_HOST = "app.meticulous.ai";
|
|
9
|
+
/** Introduction to the ways coding agents can interact with Meticulous. */
|
|
10
|
+
export declare const AGENTS_SETUP_DOCS_URL = "https://app.meticulous.ai/docs/agents/setup-for-agents";
|
|
9
11
|
/** Docs for installing and linking the GitHub App (status checks). */
|
|
10
12
|
export declare const GITHUB_ACTIONS_DOCS_URL = "https://app.meticulous.ai/docs/github-actions-v2";
|
|
11
13
|
//# sourceMappingURL=docs-urls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-urls.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/docs-urls.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AAEzE,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,qDAAkD,CAAC"}
|
|
1
|
+
{"version":3,"file":"docs-urls.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/docs-urls.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AAEzE,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,2DAAwD,CAAC;AAE3F,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,qDAAkD,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b57beb19-1dd2-53ef-a677-4bb4597bb953")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.GITHUB_ACTIONS_DOCS_URL = exports.METICULOUS_DOCS_HOST = exports.METICULOUS_DOCS_BASE_URL = void 0;
|
|
5
|
+
exports.GITHUB_ACTIONS_DOCS_URL = exports.AGENTS_SETUP_DOCS_URL = exports.METICULOUS_DOCS_HOST = exports.METICULOUS_DOCS_BASE_URL = void 0;
|
|
6
6
|
/**
|
|
7
7
|
* Public Meticulous docs. These pages need no auth and are rendered at build
|
|
8
8
|
* time, so the install agent can fetch them directly instead of us shipping
|
|
@@ -11,7 +11,9 @@ exports.GITHUB_ACTIONS_DOCS_URL = exports.METICULOUS_DOCS_HOST = exports.METICUL
|
|
|
11
11
|
exports.METICULOUS_DOCS_BASE_URL = "https://app.meticulous.ai/docs";
|
|
12
12
|
/** Host that must be fetchable for the agent to read the docs above. */
|
|
13
13
|
exports.METICULOUS_DOCS_HOST = "app.meticulous.ai";
|
|
14
|
+
/** Introduction to the ways coding agents can interact with Meticulous. */
|
|
15
|
+
exports.AGENTS_SETUP_DOCS_URL = `${exports.METICULOUS_DOCS_BASE_URL}/agents/setup-for-agents`;
|
|
14
16
|
/** Docs for installing and linking the GitHub App (status checks). */
|
|
15
17
|
exports.GITHUB_ACTIONS_DOCS_URL = `${exports.METICULOUS_DOCS_BASE_URL}/github-actions-v2`;
|
|
16
18
|
//# sourceMappingURL=docs-urls.js.map
|
|
17
|
-
//# debugId=
|
|
19
|
+
//# debugId=b57beb19-1dd2-53ef-a677-4bb4597bb953
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-urls.js","sources":["../../../src/commands/onboard/docs-urls.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,gCAAgC,CAAC;AAEzE,wEAAwE;AAC3D,QAAA,oBAAoB,GAAG,mBAAmB,CAAC;AAExD,sEAAsE;AACzD,QAAA,uBAAuB,GAAG,GAAG,gCAAwB,oBAAoB,CAAC","debugId":"
|
|
1
|
+
{"version":3,"file":"docs-urls.js","sources":["../../../src/commands/onboard/docs-urls.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,gCAAgC,CAAC;AAEzE,wEAAwE;AAC3D,QAAA,oBAAoB,GAAG,mBAAmB,CAAC;AAExD,2EAA2E;AAC9D,QAAA,qBAAqB,GAAG,GAAG,gCAAwB,0BAA0B,CAAC;AAE3F,sEAAsE;AACzD,QAAA,uBAAuB,GAAG,GAAG,gCAAwB,oBAAoB,CAAC","debugId":"b57beb19-1dd2-53ef-a677-4bb4597bb953"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAO3C,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAO3C,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAYxB,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AA4FD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,OAAO,EAAE,cAAc,CA6EjE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c8ba25ff-4586-51cb-a76a-691789e9c5b7")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.onboardCommand = void 0;
|
|
@@ -18,6 +18,7 @@ const resolve_app_1 = require("./resolve-app");
|
|
|
18
18
|
const discover_apps_1 = require("./discover-apps");
|
|
19
19
|
const resolve_project_1 = require("./resolve-project");
|
|
20
20
|
const setup_agent_integrations_1 = require("./setup-agent-integrations");
|
|
21
|
+
const validate_ci_yaml_1 = require("./validate-ci-yaml");
|
|
21
22
|
const handler = async (options) => {
|
|
22
23
|
const projectRoot = (0, path_1.resolve)(options.cwd ?? process.cwd());
|
|
23
24
|
if (!(0, fs_1.existsSync)(projectRoot)) {
|
|
@@ -57,10 +58,10 @@ const handler = async (options) => {
|
|
|
57
58
|
workspaceDir,
|
|
58
59
|
});
|
|
59
60
|
const prompt = options.prompt ?? (0, launch_agent_1.defaultOnboardPrompt)({ headless: options.headless });
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
//
|
|
63
|
-
context.agentIntegrationPaths = (0, setup_agent_integrations_1.setupAgentIntegrations)({ projectRoot });
|
|
61
|
+
// MCP setup and the optional skills install are independent of the tool
|
|
62
|
+
// choice and onboarding prompt. Run them here, before the picker: the agent
|
|
63
|
+
// CLIs take over the terminal on launch, which would hide the skills choice.
|
|
64
|
+
context.agentIntegrationPaths = await (0, setup_agent_integrations_1.setupAgentIntegrations)({ projectRoot });
|
|
64
65
|
(0, materialize_workspace_1.updateOnboardContext)({ projectRoot, workspaceDir, context });
|
|
65
66
|
if (options.printOnly) {
|
|
66
67
|
(0, launch_agent_1.printManualLaunchInstructions)({ workspaceDir, projectRoot, prompt });
|
|
@@ -83,6 +84,7 @@ const handler = async (options) => {
|
|
|
83
84
|
headless: options.headless,
|
|
84
85
|
auto: options.auto,
|
|
85
86
|
});
|
|
87
|
+
(0, validate_ci_yaml_1.warnAboutInvalidCiYaml)({ projectRoot });
|
|
86
88
|
(0, launch_agent_1.printNextSteps)({
|
|
87
89
|
tool,
|
|
88
90
|
context,
|
|
@@ -161,4 +163,4 @@ exports.onboardCommand = {
|
|
|
161
163
|
}),
|
|
162
164
|
};
|
|
163
165
|
//# sourceMappingURL=index.js.map
|
|
164
|
-
//# debugId=
|
|
166
|
+
//# debugId=c8ba25ff-4586-51cb-a76a-691789e9c5b7
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/commands/onboard/index.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,2BAAgC;AAChC,+BAA+B;AAE/B,uEAA6D;AAC7D,mEAA+D;AAC/D,mDAAsD;AACtD,qDAA0D;AAC1D,yDAAqD;AACrD,mDAAgD;AAChD,iDAQwB;AACxB,mEAGiC;AACjC,mDAAsD;AACtD,+CAAuE;AACvE,mDAAiE;AACjE,uDAA0D;AAC1D,yEAAoE;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/commands/onboard/index.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"c8ba25ff-4586-51cb-a76a-691789e9c5b7"}
|
|
@@ -46,6 +46,7 @@ export declare const printNextSteps: (options: {
|
|
|
46
46
|
orgAndProject: string | null;
|
|
47
47
|
meticulousSideSetupPath: string;
|
|
48
48
|
meticulousTokensUrl: string | null;
|
|
49
|
+
meticulousSessionsUrl: string | null;
|
|
49
50
|
secretsUrl: string | null;
|
|
50
51
|
secretsUrlLabel: string | null;
|
|
51
52
|
githubConfigureProjectsUrl: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch-agent.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/launch-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"launch-agent.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/launch-agent.ts"],"names":[],"mappings":"AAWA,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC;AACjD,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAC1C,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,MAAM,CAAC;AA2DtD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,YAAa;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,KAAG,MAG7C,CAAC;AAE1B;;;GAGG;AACH,eAAO,MAAM,oBAAoB,YAAa;IAC5C,gBAAgB,EAAE,MAAM,CAAC;CAC1B,KAAG,IAcH,CAAC;AAmBF,eAAO,MAAM,eAAe,SAAU,WAAW,KAAG,OAOnD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CA8BhE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,cAClB,kBAAkB,KAC5B,OAAO,CAAC,WAAW,GAAG,IAAI,CAsB5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf,KAAG,MAsBH,CAAC;AAiDF,eAAO,MAAM,cAAc,YAAa;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,uBAAuB,EAAE,MAAM,CAAC;QAChC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;QACrC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1C,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1C,6BAA6B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7C,yBAAyB,EAAE,OAAO,GAAG,IAAI,CAAC;QAC1C,yBAAyB,EAAE,OAAO,GAAG,IAAI,CAAC;QAC1C,4BAA4B,EAAE,OAAO,GAAG,IAAI,CAAC;QAC7C,UAAU,EACN,gBAAgB,GAChB,WAAW,GACX,qBAAqB,GACrB,SAAS,CAAC;KACf,CAAC;CACH,KAAG,IA0BH,CAAC;AAqEF,eAAO,MAAM,6BAA6B,YAAa;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,KAAG,IAoCH,CAAC"}
|