lim 0.30.3 → 0.31.1

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 (123) hide show
  1. package/dist/base-command.d.ts +9 -0
  2. package/dist/base-command.d.ts.map +1 -1
  3. package/dist/base-command.js +68 -14
  4. package/dist/base-command.js.map +1 -1
  5. package/dist/commands/android/app-logs.d.ts +17 -0
  6. package/dist/commands/android/app-logs.d.ts.map +1 -0
  7. package/dist/commands/android/app-logs.js +35 -0
  8. package/dist/commands/android/app-logs.js.map +1 -0
  9. package/dist/commands/android/create.d.ts +4 -0
  10. package/dist/commands/android/create.d.ts.map +1 -1
  11. package/dist/commands/android/create.js +45 -0
  12. package/dist/commands/android/create.js.map +1 -1
  13. package/dist/commands/android/events.d.ts +17 -0
  14. package/dist/commands/android/events.d.ts.map +1 -0
  15. package/dist/commands/android/events.js +35 -0
  16. package/dist/commands/android/events.js.map +1 -0
  17. package/dist/commands/android/record.d.ts +2 -0
  18. package/dist/commands/android/record.d.ts.map +1 -1
  19. package/dist/commands/android/record.js +27 -3
  20. package/dist/commands/android/record.js.map +1 -1
  21. package/dist/commands/android/recordings.d.ts +17 -0
  22. package/dist/commands/android/recordings.d.ts.map +1 -0
  23. package/dist/commands/android/recordings.js +35 -0
  24. package/dist/commands/android/recordings.js.map +1 -0
  25. package/dist/commands/android/sync.d.ts.map +1 -1
  26. package/dist/commands/android/sync.js +3 -3
  27. package/dist/commands/android/sync.js.map +1 -1
  28. package/dist/commands/android/tunnel/index.d.ts +29 -0
  29. package/dist/commands/android/tunnel/index.d.ts.map +1 -0
  30. package/dist/commands/android/tunnel/index.js +170 -0
  31. package/dist/commands/android/tunnel/index.js.map +1 -0
  32. package/dist/commands/android/tunnel/index.test.d.ts +2 -0
  33. package/dist/commands/android/tunnel/index.test.d.ts.map +1 -0
  34. package/dist/commands/android/tunnel/index.test.js +66 -0
  35. package/dist/commands/android/tunnel/index.test.js.map +1 -0
  36. package/dist/commands/android/tunnel/status.d.ts +17 -0
  37. package/dist/commands/android/tunnel/status.d.ts.map +1 -0
  38. package/dist/commands/android/tunnel/status.js +61 -0
  39. package/dist/commands/android/tunnel/status.js.map +1 -0
  40. package/dist/commands/android/tunnel/stop.d.ts +17 -0
  41. package/dist/commands/android/tunnel/stop.d.ts.map +1 -0
  42. package/dist/commands/android/tunnel/stop.js +50 -0
  43. package/dist/commands/android/tunnel/stop.js.map +1 -0
  44. package/dist/commands/ios/app-logs.d.ts +17 -0
  45. package/dist/commands/ios/app-logs.d.ts.map +1 -0
  46. package/dist/commands/ios/app-logs.js +35 -0
  47. package/dist/commands/ios/app-logs.js.map +1 -0
  48. package/dist/commands/ios/create.d.ts +4 -0
  49. package/dist/commands/ios/create.d.ts.map +1 -1
  50. package/dist/commands/ios/create.js +45 -0
  51. package/dist/commands/ios/create.js.map +1 -1
  52. package/dist/commands/ios/events.d.ts +17 -0
  53. package/dist/commands/ios/events.d.ts.map +1 -0
  54. package/dist/commands/ios/events.js +35 -0
  55. package/dist/commands/ios/events.js.map +1 -0
  56. package/dist/commands/ios/launch-app.js +1 -1
  57. package/dist/commands/ios/launch-app.js.map +1 -1
  58. package/dist/commands/ios/record.d.ts +2 -0
  59. package/dist/commands/ios/record.d.ts.map +1 -1
  60. package/dist/commands/ios/record.js +27 -3
  61. package/dist/commands/ios/record.js.map +1 -1
  62. package/dist/commands/ios/recordings.d.ts +17 -0
  63. package/dist/commands/ios/recordings.d.ts.map +1 -0
  64. package/dist/commands/ios/recordings.js +35 -0
  65. package/dist/commands/ios/recordings.js.map +1 -0
  66. package/dist/commands/ios/sync.d.ts.map +1 -1
  67. package/dist/commands/ios/sync.js +3 -3
  68. package/dist/commands/ios/sync.js.map +1 -1
  69. package/dist/commands/ios/tunnel/index.d.ts +3 -9
  70. package/dist/commands/ios/tunnel/index.d.ts.map +1 -1
  71. package/dist/commands/ios/tunnel/index.js +33 -239
  72. package/dist/commands/ios/tunnel/index.js.map +1 -1
  73. package/dist/commands/ios/tunnel/status.d.ts.map +1 -1
  74. package/dist/commands/ios/tunnel/status.js +17 -41
  75. package/dist/commands/ios/tunnel/status.js.map +1 -1
  76. package/dist/commands/ios/tunnel/stop.d.ts +0 -4
  77. package/dist/commands/ios/tunnel/stop.d.ts.map +1 -1
  78. package/dist/commands/ios/tunnel/stop.js +13 -111
  79. package/dist/commands/ios/tunnel/stop.js.map +1 -1
  80. package/dist/lib/duration.d.ts +5 -0
  81. package/dist/lib/duration.d.ts.map +1 -1
  82. package/dist/lib/duration.js +21 -0
  83. package/dist/lib/duration.js.map +1 -1
  84. package/dist/lib/session-artifacts.d.ts +11 -0
  85. package/dist/lib/session-artifacts.d.ts.map +1 -0
  86. package/dist/lib/session-artifacts.js +30 -0
  87. package/dist/lib/session-artifacts.js.map +1 -0
  88. package/dist/lib/session-captures.d.ts +41 -0
  89. package/dist/lib/session-captures.d.ts.map +1 -0
  90. package/dist/lib/session-captures.js +55 -0
  91. package/dist/lib/session-captures.js.map +1 -0
  92. package/dist/lib/tunnel-command.d.ts +98 -0
  93. package/dist/lib/tunnel-command.d.ts.map +1 -0
  94. package/dist/lib/tunnel-command.js +542 -0
  95. package/dist/lib/tunnel-command.js.map +1 -0
  96. package/dist/lib/tunnel-command.test.d.ts +2 -0
  97. package/dist/lib/tunnel-command.test.d.ts.map +1 -0
  98. package/dist/lib/tunnel-command.test.js +91 -0
  99. package/dist/lib/tunnel-command.test.js.map +1 -0
  100. package/dist/lib/tunnel-har.d.ts +14 -0
  101. package/dist/lib/tunnel-har.d.ts.map +1 -0
  102. package/dist/lib/tunnel-har.js +150 -0
  103. package/dist/lib/tunnel-har.js.map +1 -0
  104. package/dist/lib/tunnel-har.test.d.ts +2 -0
  105. package/dist/lib/tunnel-har.test.d.ts.map +1 -0
  106. package/dist/lib/tunnel-har.test.js +164 -0
  107. package/dist/lib/tunnel-har.test.js.map +1 -0
  108. package/dist/lib/tunnel-process.d.ts +98 -0
  109. package/dist/lib/tunnel-process.d.ts.map +1 -0
  110. package/dist/lib/{ios-tunnel-process.js → tunnel-process.js} +87 -97
  111. package/dist/lib/tunnel-process.js.map +1 -0
  112. package/dist/lib/tunnel-process.test.d.ts +2 -0
  113. package/dist/lib/tunnel-process.test.d.ts.map +1 -0
  114. package/dist/lib/tunnel-process.test.js +428 -0
  115. package/dist/lib/tunnel-process.test.js.map +1 -0
  116. package/package.json +2 -2
  117. package/dist/lib/ios-tunnel-process.d.ts +0 -70
  118. package/dist/lib/ios-tunnel-process.d.ts.map +0 -1
  119. package/dist/lib/ios-tunnel-process.js.map +0 -1
  120. package/dist/lib/ios-tunnel-process.test.d.ts +0 -2
  121. package/dist/lib/ios-tunnel-process.test.d.ts.map +0 -1
  122. package/dist/lib/ios-tunnel-process.test.js +0 -339
  123. package/dist/lib/ios-tunnel-process.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../../src/commands/ios/tunnel/stop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../../src/commands/ios/tunnel/stop.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,wDAAoD;AACpD,kFAA4E;AAC5E,gEAA4D;AAE5D,MAAqB,aAAc,SAAQ,0BAAW;IAsBpD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,IAAA,8BAAa,EAAC;gBAClB,UAAU,EAAE,gBAAgB,CAAC,EAAE;gBAC/B,OAAO,EAAE,KAAK,IAAI,EAAE;oBAClB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,8CAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;oBACzF,OAAO;wBACL,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE;wBAC/C,UAAU,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;wBAC7D,UAAU;qBACX,CAAC;gBACJ,CAAC;gBACD,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;;AA1CM,qBAAO,GAAG,oCAAoC,CAAC;AAC/C,yBAAW,GAChB,8IAA8I,CAAC;AAC1I,sBAAQ,GAAG;IAChB,sDAAsD;IACtD,6DAA6D;CAC9D,CAAC;AAEK,mBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,oFAAoF;QACjG,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;KACb,CAAC;IACF,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,qEAAqE;KACnF,CAAC;CACH,CAAC;kBApBiB,aAAa"}
@@ -1,2 +1,7 @@
1
+ /**
2
+ * Parses a Go-style duration such as "72h", "90m", "1h30m", or "45s" into
3
+ * whole seconds. Throws on anything else, including "1d" and bare numbers.
4
+ */
5
+ export declare function parseDurationSeconds(value: string): number;
1
6
  export declare function formatDurationMs(durationMs: number): string;
2
7
  //# sourceMappingURL=duration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/lib/duration.ts"],"names":[],"mappings":"AAcA,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAyB3D"}
1
+ {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/lib/duration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAe1D;AAgBD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAyB3D"}
@@ -1,6 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDurationSeconds = parseDurationSeconds;
3
4
  exports.formatDurationMs = formatDurationMs;
5
+ /**
6
+ * Parses a Go-style duration such as "72h", "90m", "1h30m", or "45s" into
7
+ * whole seconds. Throws on anything else, including "1d" and bare numbers.
8
+ */
9
+ function parseDurationSeconds(value) {
10
+ const trimmed = value.trim();
11
+ if (!/^(\d+(\.\d+)?(h|m|s))+$/.test(trimmed)) {
12
+ throw new Error(`Invalid duration "${value}". Use hours, minutes, and seconds, e.g. 72h, 90m, 1h30m.`);
13
+ }
14
+ const unitSeconds = { h: 3600, m: 60, s: 1 };
15
+ let seconds = 0;
16
+ for (const [, amount, , unit] of trimmed.matchAll(/(\d+(\.\d+)?)(h|m|s)/g)) {
17
+ seconds += Number(amount) * unitSeconds[unit];
18
+ }
19
+ const rounded = Math.round(seconds);
20
+ if (rounded <= 0) {
21
+ throw new Error(`Invalid duration "${value}": must be longer than zero seconds.`);
22
+ }
23
+ return rounded;
24
+ }
4
25
  function trimFraction(value) {
5
26
  return value.replace(/\.?0+$/, '');
6
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../src/lib/duration.ts"],"names":[],"mappings":";;AAcA,4CAyBC;AAvCD,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChD,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAAkB;IACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAE/C,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACd,OAAO,GAAG,EAAE,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,EAAE,GAAG,KAAM,EAAE,CAAC;QAChB,OAAO,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAS,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,OAAS,CAAC,GAAG,KAAM,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,KAAM,CAAC,GAAG,IAAI,CAAC;IAErC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG,CAAC;QAC7B,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,OAAO,GAAG,CAAC;IACjC,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO,GAAG,UAAU,GAAG,UAAU,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../src/lib/duration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { SessionArtifact } from '@limrun/api';
2
+ /**
3
+ * Table rows for persisted session artifacts, shared by the recordings,
4
+ * app-logs, and events list commands of both platforms. The download URL is
5
+ * presigned and long, so the table keeps it out; --json carries it.
6
+ */
7
+ export declare function sessionArtifactTable(artifacts: SessionArtifact[]): {
8
+ headers: string[];
9
+ rows: string[][];
10
+ };
11
+ //# sourceMappingURL=session-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-artifacts.d.ts","sourceRoot":"","sources":["../../src/lib/session-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG;IAClE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB,CAWA"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sessionArtifactTable = sessionArtifactTable;
4
+ /**
5
+ * Table rows for persisted session artifacts, shared by the recordings,
6
+ * app-logs, and events list commands of both platforms. The download URL is
7
+ * presigned and long, so the table keeps it out; --json carries it.
8
+ */
9
+ function sessionArtifactTable(artifacts) {
10
+ const headers = ['ID', 'App', 'Started', 'Stopped', 'Size', 'Expires'];
11
+ const rows = artifacts.map((a) => [
12
+ a.id,
13
+ a.bundleId ?? '',
14
+ a.startedAt ?? '',
15
+ a.stoppedAt ?? '',
16
+ a.sizeBytes !== undefined ? formatSize(a.sizeBytes) : '',
17
+ a.expiresAt ?? '',
18
+ ]);
19
+ return { headers, rows };
20
+ }
21
+ function formatSize(bytes) {
22
+ if (bytes < 1024)
23
+ return `${bytes}B`;
24
+ if (bytes < 1024 * 1024)
25
+ return `${(bytes / 1024).toFixed(1)}KB`;
26
+ if (bytes < 1024 * 1024 * 1024)
27
+ return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
28
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)}GB`;
29
+ }
30
+ //# sourceMappingURL=session-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-artifacts.js","sourceRoot":"","sources":["../../src/lib/session-artifacts.ts"],"names":[],"mappings":";;AAOA,oDAcC;AAnBD;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,SAA4B;IAI/D,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAChC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,QAAQ,IAAI,EAAE;QAChB,CAAC,CAAC,SAAS,IAAI,EAAE;QACjB,CAAC,CAAC,SAAS,IAAI,EAAE;QACjB,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACxD,CAAC,CAAC,SAAS,IAAI,EAAE;KAClB,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IACrC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { PersistOption, SessionArtifact } from '@limrun/api';
2
+ /**
3
+ * The capture-start surface both platform clients share, so `ios create` and
4
+ * `android create` can drive them with the same code.
5
+ */
6
+ type CaptureClient = {
7
+ startRecording: (options?: {
8
+ persist?: PersistOption;
9
+ }) => Promise<void>;
10
+ startAppLogCapture: (options: {
11
+ bundleId: string;
12
+ persist?: PersistOption;
13
+ }) => Promise<void>;
14
+ startEventCapture: (options?: {
15
+ persist?: PersistOption;
16
+ }) => Promise<void>;
17
+ };
18
+ export type CaptureRequest = {
19
+ record: boolean;
20
+ /** Bundle id (iOS) or package name (Android) to capture app logs for. */
21
+ appLogsBundleId?: string;
22
+ events: boolean;
23
+ ttlSeconds: number;
24
+ };
25
+ /**
26
+ * Starts the requested persisted captures and returns a human-readable
27
+ * description of each one started, in start order. The captures keep running
28
+ * server-side after the connection closes, until stopped or the instance
29
+ * terminates.
30
+ */
31
+ /**
32
+ * Table headers and rows for a session-artifact listing. The Bundle ID
33
+ * column appears only when at least one artifact carries one (app logs).
34
+ */
35
+ export declare function sessionArtifactTable(artifacts: SessionArtifact[]): {
36
+ headers: string[];
37
+ rows: string[][];
38
+ };
39
+ export declare function startPersistedCaptures(client: CaptureClient, request: CaptureRequest): Promise<string[]>;
40
+ export {};
41
+ //# sourceMappingURL=session-captures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-captures.d.ts","sourceRoot":"","sources":["../../src/lib/session-captures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGlE;;;GAGG;AACH,KAAK,aAAa,GAAG;IACnB,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,aAAa,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,kBAAkB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,aAAa,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG;IAClE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB,CAqBA;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sessionArtifactTable = sessionArtifactTable;
4
+ exports.startPersistedCaptures = startPersistedCaptures;
5
+ const bytes_1 = require("./bytes");
6
+ /**
7
+ * Starts the requested persisted captures and returns a human-readable
8
+ * description of each one started, in start order. The captures keep running
9
+ * server-side after the connection closes, until stopped or the instance
10
+ * terminates.
11
+ */
12
+ /**
13
+ * Table headers and rows for a session-artifact listing. The Bundle ID
14
+ * column appears only when at least one artifact carries one (app logs).
15
+ */
16
+ function sessionArtifactTable(artifacts) {
17
+ const withBundle = artifacts.some((artifact) => artifact.bundleId);
18
+ const headers = [
19
+ 'ID',
20
+ ...(withBundle ? ['Bundle ID'] : []),
21
+ 'Started',
22
+ 'Stopped',
23
+ 'Expires',
24
+ 'Size',
25
+ 'Download URL',
26
+ ];
27
+ const rows = artifacts.map((artifact) => [
28
+ artifact.id,
29
+ ...(withBundle ? [artifact.bundleId ?? ''] : []),
30
+ artifact.startedAt ?? '',
31
+ artifact.stoppedAt ?? '',
32
+ artifact.expiresAt ?? '',
33
+ artifact.sizeBytes !== undefined ? (0, bytes_1.formatBytes)(artifact.sizeBytes) : '',
34
+ artifact.downloadUrl,
35
+ ]);
36
+ return { headers, rows };
37
+ }
38
+ async function startPersistedCaptures(client, request) {
39
+ const persist = { ttlSeconds: request.ttlSeconds };
40
+ const started = [];
41
+ if (request.record) {
42
+ await client.startRecording({ persist });
43
+ started.push('session recording');
44
+ }
45
+ if (request.appLogsBundleId) {
46
+ await client.startAppLogCapture({ bundleId: request.appLogsBundleId, persist });
47
+ started.push(`app log capture for ${request.appLogsBundleId}`);
48
+ }
49
+ if (request.events) {
50
+ await client.startEventCapture({ persist });
51
+ started.push('event log capture');
52
+ }
53
+ return started;
54
+ }
55
+ //# sourceMappingURL=session-captures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-captures.js","sourceRoot":"","sources":["../../src/lib/session-captures.ts"],"names":[],"mappings":";;AA+BA,oDAwBC;AAED,wDAmBC;AA3ED,mCAAsC;AAoBtC;;;;;GAKG;AACH;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,SAA4B;IAI/D,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG;QACd,IAAI;QACJ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,SAAS;QACT,SAAS;QACT,SAAS;QACT,MAAM;QACN,cAAc;KACf,CAAC;IACF,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QACvC,QAAQ,CAAC,EAAE;QACX,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,SAAS,IAAI,EAAE;QACxB,QAAQ,CAAC,SAAS,IAAI,EAAE;QACxB,QAAQ,CAAC,SAAS,IAAI,EAAE;QACxB,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,mBAAW,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACvE,QAAQ,CAAC,WAAW;KACrB,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,MAAqB,EACrB,OAAuB;IAEvB,MAAM,OAAO,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;IACnD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,MAAM,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { type DestinationTunnelInspectionConfig, type DestinationTunnelInspectionErrorCallback, type DestinationTunnelInspectionEventCallback, type DestinationTunnelSelectors, type DestinationTunnelStatus } from '@limrun/api';
2
+ import { type TunnelLike, type TunnelProduct } from './tunnel-process';
3
+ /** One live tunnel generation, as exposed by the SDK clients. */
4
+ export interface TunnelGeneration extends TunnelLike {
5
+ tunnelId: string;
6
+ close: () => void;
7
+ }
8
+ /** The subset of the client needed for status and stop flows. */
9
+ export interface TunnelManagementFacade {
10
+ getTunnelStatus: () => Promise<DestinationTunnelStatus>;
11
+ stopTunnel: (tunnelId: string) => Promise<void>;
12
+ disconnect: () => void;
13
+ }
14
+ /** Product-neutral view over the iOS/Android instance clients. */
15
+ export interface TunnelClientFacade extends TunnelManagementFacade {
16
+ startTunnel: (options: {
17
+ selectors: DestinationTunnelSelectors;
18
+ inspection: DestinationTunnelInspectionConfig;
19
+ onInspectionEvent?: DestinationTunnelInspectionEventCallback;
20
+ onInspectionError?: DestinationTunnelInspectionErrorCallback;
21
+ }) => Promise<TunnelGeneration>;
22
+ }
23
+ /** 'debug' additionally logs every forwarded connection and dial failure. */
24
+ export type TunnelLogLevel = 'debug' | 'info' | 'none';
25
+ /**
26
+ * Adapts an SDK instance client to the product-neutral facade. Both clients
27
+ * accept the selectors shape directly, so the adapter only threads the CLI's
28
+ * log level through.
29
+ */
30
+ export declare function tunnelClientFacade(client: {
31
+ startTunnel: (options: {
32
+ selectors: DestinationTunnelSelectors;
33
+ logLevel?: TunnelLogLevel;
34
+ inspection?: Partial<DestinationTunnelInspectionConfig>;
35
+ onInspectionEvent?: DestinationTunnelInspectionEventCallback;
36
+ onInspectionError?: DestinationTunnelInspectionErrorCallback;
37
+ }) => Promise<TunnelGeneration>;
38
+ getTunnelStatus: () => Promise<DestinationTunnelStatus>;
39
+ stopTunnel: (tunnelId: string) => Promise<void>;
40
+ }, disconnect: () => void, logLevel: TunnelLogLevel): TunnelClientFacade;
41
+ export interface TunnelCommandIO {
42
+ error: (message: string) => never;
43
+ output: (message: string) => void;
44
+ info: (message: string) => void;
45
+ outputJson: (value: unknown) => void;
46
+ isJsonEnabled: () => boolean;
47
+ }
48
+ export interface TunnelCommandContext {
49
+ product: TunnelProduct;
50
+ instanceId: string;
51
+ selectors: DestinationTunnelSelectors;
52
+ apiKey?: string | undefined;
53
+ /** Forward --verbose to the detached serve child so its log shows connections. */
54
+ verbose?: boolean;
55
+ /** Reconnect with backoff after unexpected disconnects (Android behavior). */
56
+ reconnect: boolean;
57
+ /** Whether Android HTTP inspection is negotiated for each generation. */
58
+ inspect: boolean;
59
+ /** Persist the completed network log as a session artifact. */
60
+ persist?: boolean;
61
+ /** Persisted network-log lifetime in seconds. */
62
+ ttlSeconds?: number;
63
+ /** Optional HAR destination; file IO remains in the CLI layer. */
64
+ harPath?: string;
65
+ /** Maximum captured bytes for each request and response body. */
66
+ harBodyLimit?: number;
67
+ onInspectionEvent?: DestinationTunnelInspectionEventCallback;
68
+ onInspectionError?: DestinationTunnelInspectionErrorCallback;
69
+ connect: () => Promise<TunnelClientFacade>;
70
+ io: TunnelCommandIO;
71
+ sleep?: (milliseconds: number) => Promise<void>;
72
+ }
73
+ /** Context for status/stop flows, which never start a tunnel. */
74
+ export interface TunnelManagementContext {
75
+ instanceId: string;
76
+ connect: () => Promise<TunnelManagementFacade>;
77
+ io: TunnelCommandIO;
78
+ sleep?: (milliseconds: number) => Promise<void>;
79
+ }
80
+ export type RemoteStopOutcome = {
81
+ outcome: 'none';
82
+ } | {
83
+ outcome: 'stopped' | 'gone';
84
+ tunnelId: string;
85
+ };
86
+ export declare function runTunnelForeground(context: TunnelCommandContext): Promise<void>;
87
+ export declare function serveTunnelDetached(context: TunnelCommandContext, owner: string): Promise<void>;
88
+ export declare function startTunnelDetached(context: TunnelCommandContext): Promise<void>;
89
+ /**
90
+ * Shared status flow: owner listing, JSON assembly, and failure lines are
91
+ * identical across products; only how the active tunnel's targets are
92
+ * rendered differs (iOS shows routes, Android shows selectors and binds).
93
+ */
94
+ export declare function runTunnelStatus(context: TunnelManagementContext & {
95
+ renderActive: (active: NonNullable<DestinationTunnelStatus['active']>, io: TunnelCommandIO) => void;
96
+ }): Promise<void>;
97
+ export declare function runTunnelStop(context: TunnelManagementContext): Promise<void>;
98
+ //# sourceMappingURL=tunnel-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel-command.d.ts","sourceRoot":"","sources":["../../src/lib/tunnel-command.ts"],"names":[],"mappings":"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"}