looply-cli 0.5.21 → 0.5.23

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.
Files changed (70) hide show
  1. package/dist/.src-hash +1 -1
  2. package/dist/branch-delivery-wiring.d.ts.map +1 -1
  3. package/dist/branch-delivery-wiring.js +9 -2
  4. package/dist/branch-delivery-wiring.js.map +1 -1
  5. package/dist/branch-delivery.d.ts +7 -1
  6. package/dist/branch-delivery.d.ts.map +1 -1
  7. package/dist/branch-delivery.js +8 -2
  8. package/dist/branch-delivery.js.map +1 -1
  9. package/dist/config.d.ts +9 -1
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +14 -0
  12. package/dist/config.js.map +1 -1
  13. package/dist/daemon-cmd.d.ts +2 -0
  14. package/dist/daemon-cmd.d.ts.map +1 -1
  15. package/dist/daemon-cmd.js +37 -0
  16. package/dist/daemon-cmd.js.map +1 -1
  17. package/dist/eas-cli-install.d.ts +47 -0
  18. package/dist/eas-cli-install.d.ts.map +1 -0
  19. package/dist/eas-cli-install.js +148 -0
  20. package/dist/eas-cli-install.js.map +1 -0
  21. package/dist/expo-release-wiring.d.ts +4 -1
  22. package/dist/expo-release-wiring.d.ts.map +1 -1
  23. package/dist/expo-release-wiring.js +19 -1
  24. package/dist/expo-release-wiring.js.map +1 -1
  25. package/dist/expo-release.d.ts +6 -1
  26. package/dist/expo-release.d.ts.map +1 -1
  27. package/dist/expo-release.js +11 -2
  28. package/dist/expo-release.js.map +1 -1
  29. package/dist/feature-report.d.ts +25 -0
  30. package/dist/feature-report.d.ts.map +1 -0
  31. package/dist/feature-report.js +112 -0
  32. package/dist/feature-report.js.map +1 -0
  33. package/dist/feature-settings-cache.d.ts +39 -0
  34. package/dist/feature-settings-cache.d.ts.map +1 -0
  35. package/dist/feature-settings-cache.js +124 -0
  36. package/dist/feature-settings-cache.js.map +1 -0
  37. package/dist/machine-secrets.d.ts +65 -0
  38. package/dist/machine-secrets.d.ts.map +1 -0
  39. package/dist/machine-secrets.js +237 -0
  40. package/dist/machine-secrets.js.map +1 -0
  41. package/dist/preview-wiring.d.ts +2 -0
  42. package/dist/preview-wiring.d.ts.map +1 -1
  43. package/dist/preview-wiring.js +21 -2
  44. package/dist/preview-wiring.js.map +1 -1
  45. package/dist/remote-command.d.ts +34 -0
  46. package/dist/remote-command.d.ts.map +1 -0
  47. package/dist/remote-command.js +37 -0
  48. package/dist/remote-command.js.map +1 -0
  49. package/dist/run-cmd.d.ts.map +1 -1
  50. package/dist/run-cmd.js +8 -1
  51. package/dist/run-cmd.js.map +1 -1
  52. package/dist/server-client.d.ts +34 -1
  53. package/dist/server-client.d.ts.map +1 -1
  54. package/dist/server-client.js +32 -0
  55. package/dist/server-client.js.map +1 -1
  56. package/dist/untrusted-gate.d.ts +10 -1
  57. package/dist/untrusted-gate.d.ts.map +1 -1
  58. package/dist/untrusted-gate.js +2 -2
  59. package/dist/untrusted-gate.js.map +1 -1
  60. package/dist/visual-proof-cmd.d.ts.map +1 -1
  61. package/dist/visual-proof-cmd.js +6 -2
  62. package/dist/visual-proof-cmd.js.map +1 -1
  63. package/dist/visual-proof-detect.d.ts +29 -0
  64. package/dist/visual-proof-detect.d.ts.map +1 -0
  65. package/dist/visual-proof-detect.js +278 -0
  66. package/dist/visual-proof-detect.js.map +1 -0
  67. package/dist/visual-proof-run.d.ts.map +1 -1
  68. package/dist/visual-proof-run.js +6 -2
  69. package/dist/visual-proof-run.js.map +1 -1
  70. package/package.json +57 -57
@@ -7,6 +7,8 @@ const heroku_api_1 = require("./heroku-api");
7
7
  const preview_environments_1 = require("./preview-environments");
8
8
  const preview_github_1 = require("./preview-github");
9
9
  const preview_settings_cache_1 = require("./preview-settings-cache");
10
+ const feature_settings_cache_1 = require("./feature-settings-cache");
11
+ const remote_command_1 = require("./remote-command");
10
12
  function makePreviewAdvancer(opts) {
11
13
  const now = opts.now ?? (() => Date.now());
12
14
  const pull = (0, preview_settings_cache_1.makePreviewSettingsPull)({
@@ -27,10 +29,27 @@ function makePreviewAdvancer(opts) {
27
29
  const t = (0, heroku_api_1.herokuToken)();
28
30
  return t === null ? null : (0, heroku_api_1.makeHerokuApi)({ token: t.token });
29
31
  });
30
- const run = opts.runCommand ?? (0, preview_environments_1.makePreviewCommandRunner)(opts.cwd, opts.stateDir);
31
32
  const settings = () => (0, preview_settings_cache_1.resolvePreview)(opts.config.preview?.settings, opts.stateDir).settings;
33
+ /**
34
+ * THE COMMAND: the repository's own `preview.command` (run as before, the project's code), else the one
35
+ * an owner set and confirmed in AutoRyn — read fresh each time, and run ONLY in the gate sandbox with
36
+ * internet access and the secrets it names (`remote-command.ts`).
37
+ */
38
+ const local = opts.config.preview?.command?.trim() ? opts.config.preview : null;
39
+ const remote = () => (local === null ? (0, feature_settings_cache_1.readFeatureSettingsCache)(opts.stateDir)?.settings?.previewCommand ?? null : null);
40
+ const decl = {
41
+ get command() {
42
+ return local?.command ?? remote()?.command;
43
+ },
44
+ get teardown() {
45
+ return local !== null ? local.teardown : remote()?.teardown;
46
+ },
47
+ };
48
+ const host = opts.runCommand ?? (0, preview_environments_1.makePreviewCommandRunner)(opts.cwd, opts.stateDir);
49
+ const contained = opts.runContained ?? (0, remote_command_1.makeContainedCommandRunner)(opts.cwd, opts.stateDir, 'preview.log', remote);
50
+ const run = (cmd, env, timeoutMs) => (local !== null ? host(cmd, env, timeoutMs) : contained(cmd, env, timeoutMs));
32
51
  /** One command driver for the life of the daemon: it holds the background builds. */
33
- const command = (0, preview_environments_1.commandDriver)({ ...(opts.config.preview?.command ? { command: opts.config.preview.command } : {}), ...(opts.config.preview?.teardown ? { teardown: opts.config.preview.teardown } : {}) }, run);
52
+ const command = (0, preview_environments_1.commandDriver)(decl, run);
34
53
  const store = (0, preview_environments_1.filePreviewStore)(opts.stateDir);
35
54
  const deliveries = (0, branch_delivery_1.fileDeliveryStore)(opts.stateDir);
36
55
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"preview-wiring.js","sourceRoot":"","sources":["../src/preview-wiring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview-wiring.js","sourceRoot":"","sources":["../src/preview-wiring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { RemoteCommand } from '@looply/core';
2
+ import { type UntrustedGateDeps } from './untrusted-gate';
3
+ /**
4
+ * A COMMAND AN OWNER SET IN AUTORYN (a preview site's build, a release step),
5
+ * RUN WHERE GATES RUN — NEVER ON THE HOST.
6
+ *
7
+ * ─────────────────────────────────────────────────────────────────────────────
8
+ * A command written in the repository's own `.looply/config.yaml` is the
9
+ * project's code, and runs as before. A command that arrived as a remote
10
+ * setting is a code-execution path from outside this machine, so:
11
+ *
12
+ * - it runs in the gate sandbox (AppContainer), granted the project folder
13
+ * and nothing else of this machine — not the user's profile, not other
14
+ * repositories, not Looply's state or keys;
15
+ * - it gets internet access (`internet-client`), because a preview or a
16
+ * deploy must reach its host;
17
+ * - its environment is the sandbox's own plus the secrets the owner named
18
+ * for it (delivered sealed to this machine) and the LOOPLY_* facts —
19
+ * never the daemon's environment;
20
+ * - the owner confirmed exactly this text in AutoRyn (`confirmedBy`), and the
21
+ * log line says so.
22
+ *
23
+ * Its output goes to `.looply/state/run-logs/<log>`, secrets masked; what is
24
+ * reported anywhere else is a sentence, never the output.
25
+ */
26
+ export interface CommandOutcome {
27
+ code: number;
28
+ stdout: string;
29
+ }
30
+ export type ContainedCommandRunner = (command: string, env: Record<string, string>, timeoutMs: number) => Promise<CommandOutcome>;
31
+ export declare function makeContainedCommandRunner(projectDir: string, stateDir: string, logName: string, remote: () => RemoteCommand | null, deps?: Pick<UntrustedGateDeps, 'backend' | 'toolchain'> & {
32
+ home?: string;
33
+ }): ContainedCommandRunner;
34
+ //# sourceMappingURL=remote-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-command.d.ts","sourceRoot":"","sources":["../src/remote-command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAElI,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,aAAa,GAAG,IAAI,EAClC,IAAI,GAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,WAAW,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9E,sBAAsB,CA0BxB"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeContainedCommandRunner = makeContainedCommandRunner;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const machine_secrets_1 = require("./machine-secrets");
7
+ const preview_environments_1 = require("./preview-environments");
8
+ const untrusted_gate_1 = require("./untrusted-gate");
9
+ function makeContainedCommandRunner(projectDir, stateDir, logName, remote, deps = {}) {
10
+ return async (command, env, timeoutMs) => {
11
+ const r = remote();
12
+ const { env: secrets, missing } = (0, machine_secrets_1.secretEnv)(r?.secrets, deps.home);
13
+ const values = Object.values(secrets);
14
+ const mask = (s) => values.reduce((acc, v) => (v.length >= 6 ? acc.split(v).join('***') : acc), (0, preview_environments_1.redactSecrets)(s));
15
+ const note = (s) => {
16
+ try {
17
+ const dir = (0, node_path_1.join)(stateDir, 'run-logs');
18
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
19
+ (0, node_fs_1.appendFileSync)((0, node_path_1.join)(dir, logName), mask(s), 'utf8');
20
+ }
21
+ catch {
22
+ /* the log is a convenience */
23
+ }
24
+ };
25
+ note(`\n=== ${new Date().toISOString()} [sandbox, internet] ${command}${r ? ` (set in AutoRyn, confirmed by ${r.confirmedBy} at ${r.confirmedAt})` : ''}\n`);
26
+ if (missing.length > 0) {
27
+ const why = `the secret${missing.length === 1 ? '' : 's'} ${missing.join(', ')} ${missing.length === 1 ? 'is' : 'are'} not on this machine yet (AutoRyn → Software execution → Machine secrets)`;
28
+ note(`${why}\n`);
29
+ return { code: -1, stdout: why };
30
+ }
31
+ const run = (0, untrusted_gate_1.makeUntrustedGateRunner)(projectDir, { ...deps, network: 'internet-client', extraEnv: { ...secrets, ...env } });
32
+ const out = await run(command, timeoutMs);
33
+ note(out.output ?? '');
34
+ return { code: out.ok ? 0 : (out.exitCode ?? -1), stdout: (out.output ?? '').slice(-20_000) };
35
+ };
36
+ }
37
+ //# sourceMappingURL=remote-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-command.js","sourceRoot":"","sources":["../src/remote-command.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-cmd.d.ts","sourceRoot":"","sources":["../src/run-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-cmd.d.ts","sourceRoot":"","sources":["../src/run-cmd.ts"],"names":[],"mappings":"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"}
package/dist/run-cmd.js CHANGED
@@ -99,6 +99,8 @@ const provider_identity_1 = require("./provider-identity");
99
99
  const agent_exec_1 = require("./agent-exec");
100
100
  const providers_1 = require("./providers");
101
101
  const core_4 = require("@looply/core");
102
+ const core_5 = require("@looply/core");
103
+ const feature_settings_cache_1 = require("./feature-settings-cache");
102
104
  const queue_write_lease_1 = require("./queue-write-lease");
103
105
  const surface_lease_1 = require("./surface-lease");
104
106
  const spend_ledger_1 = require("./spend-ledger");
@@ -2993,7 +2995,12 @@ async function runLoop(opts) {
2993
2995
  * A bug that does not show asks one question instead of spending a fix attempt — only when the
2994
2996
  * reproduction happened in THIS Start, so a resumed goal is never asked the same thing twice.
2995
2997
  */
2996
- if (verdict.compile && scope !== null && binding.kind === 'bound' && (0, bug_repro_1.isBugGoal)(binding.goal.text)) {
2998
+ // On unless switched off: config.yaml `bug_repro.enabled`, else the switch in AutoRyn (feature switches).
2999
+ const reproSwitch = (0, core_5.bugReproEnabled)(config.bugRepro?.enabled, (0, feature_settings_cache_1.remoteFeaturesFor)(opts.cwd));
3000
+ if (!reproSwitch.enabled && binding.kind === 'bound' && (0, bug_repro_1.isBugGoal)(binding.goal.text)) {
3001
+ log(`repro : this is a bug, but reproduction-first is switched off (${reproSwitch.from === 'remote' ? 'in AutoRyn' : 'in .looply/config.yaml'}); planning the fix directly`);
3002
+ }
3003
+ if (reproSwitch.enabled && verdict.compile && scope !== null && binding.kind === 'bound' && (0, bug_repro_1.isBugGoal)(binding.goal.text)) {
2997
3004
  let repro = reproStore.read(binding.goal.id, binding.goal.version);
2998
3005
  if (repro === null) {
2999
3006
  log('repro : this is a bug — writing a test that shows it before planning the fix');