2g 0.3.1 → 0.4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # 2g
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add new `record -- [command]` sub-command to export traces for full command runs
8
+ Submitted by [@kitten](https://github.com/kitten) (See [#10](https://github.com/kitten/2g/pull/10))
9
+
10
+ ### Patch Changes
11
+
12
+ - Adjust help output and limits to prevent agents from running into cut-off trace outputs/logs
13
+ Submitted by [@kitten](https://github.com/kitten) (See [#10](https://github.com/kitten/2g/pull/10))
14
+
3
15
  ## 0.3.1
4
16
 
5
17
  ### Patch Changes
package/dist/2g-api.js CHANGED
@@ -2,128 +2,13 @@ Object.defineProperty(exports, "__esModule", {
2
2
  value: !0
3
3
  });
4
4
 
5
- var t = require("./chunks/tap-chunk.js");
5
+ var e = require("./chunks/api-chunk.js");
6
6
 
7
- var e = require("./chunks/sessionSockets-chunk.js");
7
+ exports.captureEvents = e.captureEvents;
8
8
 
9
- class EventCapture {
10
- #t;
11
- #e;
12
- #s;
13
- #i=!1;
14
- #n=!1;
15
- #r=[];
16
- #o=[];
17
- constructor(t = {}) {
18
- this.#t = t;
19
- this.#e = e.compileEventFilter(t.filter);
20
- }
21
- spawnOptions(t) {
22
- const s = Array.isArray(t?.stdio) ? [ ...t.stdio ] : null != t?.stdio ? [ t.stdio, t.stdio, t.stdio ] : [];
23
- while (s.length < 3) {
24
- s.push("inherit");
25
- }
26
- this.#s = s.length;
27
- s.push("pipe");
28
- return {
29
- ...t,
30
- stdio: s,
31
- env: {
32
- ...t?.env ?? process.env,
33
- [e.LOG_EVENTS_ENV]: `${this.#s}`
34
- }
35
- };
36
- }
37
- attach(t) {
38
- if (null == this.#s) {
39
- throw new Error("captureEvents: spawnOptions() must create the pipe before attach()");
40
- }
41
- if (this.#i) {
42
- throw new Error("captureEvents: a child is already attached");
43
- }
44
- const e = t.stdio[this.#s];
45
- if (!e || "function" != typeof e.setEncoding) {
46
- throw new Error(`captureEvents: child stdio[${this.#s}] is not a readable pipe`);
47
- }
48
- this.#i = !0;
49
- let s = "";
50
- e.setEncoding("utf8");
51
- e.on("data", t => {
52
- const e = s ? s + t : t;
53
- let i = 0;
54
- let n;
55
- while (-1 !== (n = e.indexOf("\n", i))) {
56
- const t = e.slice(i, n);
57
- i = n + 1;
58
- if (t) {
59
- this.#h(t);
60
- }
61
- }
62
- s = i ? e.slice(i) : e;
63
- });
64
- const finish = () => {
65
- if (this.#n) {
66
- return;
67
- }
68
- this.#n = !0;
69
- if (s) {
70
- this.#h(s);
71
- }
72
- this.#a(null);
73
- };
74
- e.on("end", finish);
75
- e.on("close", finish);
76
- e.on("error", finish);
77
- return this;
78
- }
79
- async collect() {
80
- const t = [];
81
- for await (const e of this) {
82
- t.push(e);
83
- }
84
- return t;
85
- }
86
- async* [Symbol.asyncIterator]() {
87
- let t;
88
- while (t = await this.#c()) {
89
- yield t;
90
- }
91
- }
92
- #h(t) {
93
- const s = e.parseEventLine(t, this.#t, this.#e);
94
- if (s) {
95
- this.#a(s);
96
- }
97
- }
98
- #a(t) {
99
- const e = this.#o.shift();
100
- if (e) {
101
- e(t);
102
- } else if (t) {
103
- this.#r.push(t);
104
- }
105
- }
106
- #c() {
107
- if (this.#r.length) {
108
- return Promise.resolve(this.#r.shift());
109
- }
110
- if (this.#n) {
111
- return Promise.resolve(null);
112
- }
113
- if (!this.#i) {
114
- throw new Error("captureEvents: attach() a child before iterating");
115
- }
116
- return new Promise(t => this.#o.push(t));
117
- }
118
- }
9
+ exports.list = e.listSessions;
119
10
 
120
- exports.list = t.listSessions;
11
+ exports.resolveSession = e.resolveSession;
121
12
 
122
- exports.resolveSession = t.resolveSession;
123
-
124
- exports.tap = t.tap;
125
-
126
- exports.captureEvents = function captureEvents(t) {
127
- return new EventCapture(t);
128
- };
13
+ exports.tap = e.tap;
129
14
  //# sourceMappingURL=2g-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"2g-api.js","sources":["../src/capture.ts"],"sourcesContent":["import type { ChildProcess, StdioOptions } from 'node:child_process';\nimport type { Readable } from 'node:stream';\n\nimport { LOG_EVENTS_ENV } from './constants';\nimport type { TapOptions } from './tap';\nimport type { ParsedEvent } from './types';\nimport { compileEventFilter, parseEventLine } from './utils/eventFilter';\n\nexport type CaptureOptions = Pick<TapOptions, 'debug' | 'filter'>;\n\nexport interface CaptureSpawnOptions {\n env?: NodeJS.ProcessEnv;\n stdio?: StdioOptions;\n}\n\nexport class EventCapture implements AsyncIterable<ParsedEvent> {\n #options: CaptureOptions;\n #eventFilter: RegExp | null;\n #index: number | undefined;\n #attached = false;\n #done = false;\n #events: ParsedEvent[] = [];\n #waiters: Array<(event: ParsedEvent | null) => void> = [];\n\n constructor(options: CaptureOptions = {}) {\n this.#options = options;\n this.#eventFilter = compileEventFilter(options.filter);\n }\n\n spawnOptions<T extends CaptureSpawnOptions>(\n options?: T\n ): T & Required<CaptureSpawnOptions> {\n const stdio: Extract<StdioOptions, readonly unknown[]> = Array.isArray(\n options?.stdio\n )\n ? [...options.stdio]\n : options?.stdio != null\n ? [options.stdio, options.stdio, options.stdio]\n : [];\n while (stdio.length < 3) stdio.push('inherit');\n this.#index = stdio.length;\n stdio.push('pipe');\n return {\n ...(options as T),\n stdio,\n env: {\n ...(options?.env ?? process.env),\n [LOG_EVENTS_ENV]: `${this.#index}`,\n },\n };\n }\n\n attach(child: ChildProcess): this {\n if (this.#index == null)\n throw new Error(\n 'captureEvents: spawnOptions() must create the pipe before attach()'\n );\n if (this.#attached)\n throw new Error('captureEvents: a child is already attached');\n const stream = child.stdio[this.#index] as Readable | null | undefined;\n if (!stream || typeof stream.setEncoding !== 'function')\n throw new Error(\n `captureEvents: child stdio[${this.#index}] is not a readable pipe`\n );\n this.#attached = true;\n\n let pending = '';\n stream.setEncoding('utf8');\n stream.on('data', (chunk: string) => {\n const data = pending ? pending + chunk : chunk;\n let start = 0;\n let end: number;\n while ((end = data.indexOf('\\n', start)) !== -1) {\n const line = data.slice(start, end);\n start = end + 1;\n if (line) this.#ingest(line);\n }\n pending = start ? data.slice(start) : data;\n });\n\n const finish = () => {\n if (this.#done) return;\n this.#done = true;\n if (pending) this.#ingest(pending);\n this.#notify(null);\n };\n stream.on('end', finish);\n stream.on('close', finish);\n stream.on('error', finish);\n return this;\n }\n\n async collect(): Promise<ParsedEvent[]> {\n const events: ParsedEvent[] = [];\n for await (const event of this) events.push(event);\n return events;\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<ParsedEvent> {\n let event: ParsedEvent | null;\n while ((event = await this.#next())) yield event;\n }\n\n #ingest(line: string) {\n const event = parseEventLine(line, this.#options, this.#eventFilter);\n if (event) this.#notify(event);\n }\n\n #notify(event: ParsedEvent | null) {\n const waiter = this.#waiters.shift();\n if (waiter) waiter(event);\n else if (event) this.#events.push(event);\n }\n\n #next(): Promise<ParsedEvent | null> {\n if (this.#events.length) return Promise.resolve(this.#events.shift()!);\n if (this.#done) return Promise.resolve(null);\n if (!this.#attached)\n throw new Error('captureEvents: attach() a child before iterating');\n return new Promise(resolve => this.#waiters.push(resolve));\n }\n}\n\nexport function captureEvents(options?: CaptureOptions): EventCapture {\n return new EventCapture(options);\n}\n"],"names":["EventCapture","options","eventFilter","index","attached","done","events","waiters","constructor","this","compileEventFilter","filter","spawnOptions","stdio","Array","isArray","length","push","env","process","LOG_EVENTS_ENV","attach","child","Error","stream","setEncoding","pending","on","chunk","data","start","end","indexOf","line","slice","ingest","finish","notify","collect","event","Symbol","asyncIterator","next","parseEventLine","waiter","shift","Promise","resolve","captureEvents"],"mappings":";;;;;;;;AAeO,MAAMA;EACXC;EACAC;EACAC;EACAC,IAAY;EACZC,IAAQ;EACRC,GAAyB;EACzBC,GAAuD;EAEvDC,WAAAA,CAAYP,IAA0B;IACpCQ,MAAKR,IAAWA;IAChBQ,MAAKP,IAAeQ,qBAAmBT,EAAQU;AACjD;EAEAC,YAAAA,CACEX;IAEA,MAAMY,IAAmDC,MAAMC,QAC7Dd,GAASY,SAEP,KAAIZ,EAAQY,UACM,QAAlBZ,GAASY,QACP,EAACZ,EAAQY,OAAOZ,EAAQY,OAAOZ,EAAQY,UACvC;IACN,OAAOA,EAAMG,SAAS;MAAGH,EAAMI,KAAK;;IACpCR,MAAKN,IAASU,EAAMG;IACpBH,EAAMI,KAAK;IACX,OAAO;SACDhB;MACJY;MACAK,KAAK;WACCjB,GAASiB,OAAOC,QAAQD;QAC5B,CAACE,mBAAiB,GAAGX,MAAKN;;;AAGhC;EAEAkB,MAAAA,CAAOC;IACL,IAAmB,QAAfb,MAAKN;MACP,MAAM,IAAIoB,MACR;;IAEJ,IAAId,MAAKL;MACP,MAAM,IAAImB,MAAM;;IAClB,MAAMC,IAASF,EAAMT,MAAMJ,MAAKN;IAChC,KAAKqB,KAAwC,qBAAvBA,EAAOC;MAC3B,MAAM,IAAIF,MACR,8BAA8Bd,MAAKN;;IAEvCM,MAAKL,KAAY;IAEjB,IAAIsB,IAAU;IACdF,EAAOC,YAAY;IACnBD,EAAOG,GAAG,QAASC;MACjB,MAAMC,IAAOH,IAAUA,IAAUE,IAAQA;MACzC,IAAIE,IAAQ;MACZ,IAAIC;MACJ,eAAQA,IAAMF,EAAKG,QAAQ,MAAMF,KAAgB;QAC/C,MAAMG,IAAOJ,EAAKK,MAAMJ,GAAOC;QAC/BD,IAAQC,IAAM;QACd,IAAIE;UAAMxB,MAAK0B,EAAQF;;AACzB;MACAP,IAAUI,IAAQD,EAAKK,MAAMJ,KAASD;;IAGxC,MAAMO,SAASA;MACb,IAAI3B,MAAKJ;QAAO;;MAChBI,MAAKJ,KAAQ;MACb,IAAIqB;QAASjB,MAAK0B,EAAQT;;MAC1BjB,MAAK4B,EAAQ;;IAEfb,EAAOG,GAAG,OAAOS;IACjBZ,EAAOG,GAAG,SAASS;IACnBZ,EAAOG,GAAG,SAASS;IACnB,OAAO3B;AACT;EAEA,aAAM6B;IACJ,MAAMhC,IAAwB;IAC9B,WAAW,MAAMiC,KAAS9B;MAAMH,EAAOW,KAAKsB;;IAC5C,OAAOjC;AACT;EAEA,QAAQkC,OAAOC;IACb,IAAIF;IACJ,OAAQA,UAAc9B,MAAKiC;YAAgBH;;AAC7C;EAEA,EAAAJ,CAAQF;IACN,MAAMM,IAAQI,EAAAA,eAAeV,GAAMxB,MAAKR,GAAUQ,MAAKP;IACvD,IAAIqC;MAAO9B,MAAK4B,EAAQE;;AAC1B;EAEA,EAAAF,CAAQE;IACN,MAAMK,IAASnC,MAAKF,EAASsC;IAC7B,IAAID;MAAQA,EAAOL;WACd,IAAIA;MAAO9B,MAAKH,EAAQW,KAAKsB;;AACpC;EAEA,EAAAG;IACE,IAAIjC,MAAKH,EAAQU;MAAQ,OAAO8B,QAAQC,QAAQtC,MAAKH,EAAQuC;;IAC7D,IAAIpC,MAAKJ;MAAO,OAAOyC,QAAQC,QAAQ;;IACvC,KAAKtC,MAAKL;MACR,MAAM,IAAImB,MAAM;;IAClB,OAAO,IAAIuB,QAAQC,KAAWtC,MAAKF,EAASU,KAAK8B;AACnD;;;;;;;;;wBAGK,SAASC,cAAc/C;EAC5B,OAAO,IAAID,aAAaC;AAC1B"}
1
+ {"version":3,"file":"2g-api.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
package/dist/2g-api.mjs CHANGED
@@ -1,121 +1,2 @@
1
- export { l as list, r as resolveSession, t as tap } from "./chunks/tap-chunk.mjs";
2
-
3
- import { c as e, L as s, p as i } from "./chunks/sessionSockets-chunk.mjs";
4
-
5
- class EventCapture {
6
- #t;
7
- #e;
8
- #s;
9
- #i=!1;
10
- #n=!1;
11
- #r=[];
12
- #o=[];
13
- constructor(t = {}) {
14
- this.#t = t;
15
- this.#e = e(t.filter);
16
- }
17
- spawnOptions(t) {
18
- const e = Array.isArray(t?.stdio) ? [ ...t.stdio ] : null != t?.stdio ? [ t.stdio, t.stdio, t.stdio ] : [];
19
- while (e.length < 3) {
20
- e.push("inherit");
21
- }
22
- this.#s = e.length;
23
- e.push("pipe");
24
- return {
25
- ...t,
26
- stdio: e,
27
- env: {
28
- ...t?.env ?? process.env,
29
- [s]: `${this.#s}`
30
- }
31
- };
32
- }
33
- attach(t) {
34
- if (null == this.#s) {
35
- throw new Error("captureEvents: spawnOptions() must create the pipe before attach()");
36
- }
37
- if (this.#i) {
38
- throw new Error("captureEvents: a child is already attached");
39
- }
40
- const e = t.stdio[this.#s];
41
- if (!e || "function" != typeof e.setEncoding) {
42
- throw new Error(`captureEvents: child stdio[${this.#s}] is not a readable pipe`);
43
- }
44
- this.#i = !0;
45
- let s = "";
46
- e.setEncoding("utf8");
47
- e.on("data", t => {
48
- const e = s ? s + t : t;
49
- let i = 0;
50
- let n;
51
- while (-1 !== (n = e.indexOf("\n", i))) {
52
- const t = e.slice(i, n);
53
- i = n + 1;
54
- if (t) {
55
- this.#h(t);
56
- }
57
- }
58
- s = i ? e.slice(i) : e;
59
- });
60
- const finish = () => {
61
- if (this.#n) {
62
- return;
63
- }
64
- this.#n = !0;
65
- if (s) {
66
- this.#h(s);
67
- }
68
- this.#a(null);
69
- };
70
- e.on("end", finish);
71
- e.on("close", finish);
72
- e.on("error", finish);
73
- return this;
74
- }
75
- async collect() {
76
- const t = [];
77
- for await (const e of this) {
78
- t.push(e);
79
- }
80
- return t;
81
- }
82
- async* [Symbol.asyncIterator]() {
83
- let t;
84
- while (t = await this.#c()) {
85
- yield t;
86
- }
87
- }
88
- #h(t) {
89
- const e = i(t, this.#t, this.#e);
90
- if (e) {
91
- this.#a(e);
92
- }
93
- }
94
- #a(t) {
95
- const e = this.#o.shift();
96
- if (e) {
97
- e(t);
98
- } else if (t) {
99
- this.#r.push(t);
100
- }
101
- }
102
- #c() {
103
- if (this.#r.length) {
104
- return Promise.resolve(this.#r.shift());
105
- }
106
- if (this.#n) {
107
- return Promise.resolve(null);
108
- }
109
- if (!this.#i) {
110
- throw new Error("captureEvents: attach() a child before iterating");
111
- }
112
- return new Promise(t => this.#o.push(t));
113
- }
114
- }
115
-
116
- function captureEvents(t) {
117
- return new EventCapture(t);
118
- }
119
-
120
- export { captureEvents };
1
+ export { c as captureEvents, l as list, r as resolveSession, t as tap } from "./chunks/api-chunk.mjs";
121
2
  //# sourceMappingURL=2g-api.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"2g-api.mjs","sources":["../src/capture.ts"],"sourcesContent":["import type { ChildProcess, StdioOptions } from 'node:child_process';\nimport type { Readable } from 'node:stream';\n\nimport { LOG_EVENTS_ENV } from './constants';\nimport type { TapOptions } from './tap';\nimport type { ParsedEvent } from './types';\nimport { compileEventFilter, parseEventLine } from './utils/eventFilter';\n\nexport type CaptureOptions = Pick<TapOptions, 'debug' | 'filter'>;\n\nexport interface CaptureSpawnOptions {\n env?: NodeJS.ProcessEnv;\n stdio?: StdioOptions;\n}\n\nexport class EventCapture implements AsyncIterable<ParsedEvent> {\n #options: CaptureOptions;\n #eventFilter: RegExp | null;\n #index: number | undefined;\n #attached = false;\n #done = false;\n #events: ParsedEvent[] = [];\n #waiters: Array<(event: ParsedEvent | null) => void> = [];\n\n constructor(options: CaptureOptions = {}) {\n this.#options = options;\n this.#eventFilter = compileEventFilter(options.filter);\n }\n\n spawnOptions<T extends CaptureSpawnOptions>(\n options?: T\n ): T & Required<CaptureSpawnOptions> {\n const stdio: Extract<StdioOptions, readonly unknown[]> = Array.isArray(\n options?.stdio\n )\n ? [...options.stdio]\n : options?.stdio != null\n ? [options.stdio, options.stdio, options.stdio]\n : [];\n while (stdio.length < 3) stdio.push('inherit');\n this.#index = stdio.length;\n stdio.push('pipe');\n return {\n ...(options as T),\n stdio,\n env: {\n ...(options?.env ?? process.env),\n [LOG_EVENTS_ENV]: `${this.#index}`,\n },\n };\n }\n\n attach(child: ChildProcess): this {\n if (this.#index == null)\n throw new Error(\n 'captureEvents: spawnOptions() must create the pipe before attach()'\n );\n if (this.#attached)\n throw new Error('captureEvents: a child is already attached');\n const stream = child.stdio[this.#index] as Readable | null | undefined;\n if (!stream || typeof stream.setEncoding !== 'function')\n throw new Error(\n `captureEvents: child stdio[${this.#index}] is not a readable pipe`\n );\n this.#attached = true;\n\n let pending = '';\n stream.setEncoding('utf8');\n stream.on('data', (chunk: string) => {\n const data = pending ? pending + chunk : chunk;\n let start = 0;\n let end: number;\n while ((end = data.indexOf('\\n', start)) !== -1) {\n const line = data.slice(start, end);\n start = end + 1;\n if (line) this.#ingest(line);\n }\n pending = start ? data.slice(start) : data;\n });\n\n const finish = () => {\n if (this.#done) return;\n this.#done = true;\n if (pending) this.#ingest(pending);\n this.#notify(null);\n };\n stream.on('end', finish);\n stream.on('close', finish);\n stream.on('error', finish);\n return this;\n }\n\n async collect(): Promise<ParsedEvent[]> {\n const events: ParsedEvent[] = [];\n for await (const event of this) events.push(event);\n return events;\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<ParsedEvent> {\n let event: ParsedEvent | null;\n while ((event = await this.#next())) yield event;\n }\n\n #ingest(line: string) {\n const event = parseEventLine(line, this.#options, this.#eventFilter);\n if (event) this.#notify(event);\n }\n\n #notify(event: ParsedEvent | null) {\n const waiter = this.#waiters.shift();\n if (waiter) waiter(event);\n else if (event) this.#events.push(event);\n }\n\n #next(): Promise<ParsedEvent | null> {\n if (this.#events.length) return Promise.resolve(this.#events.shift()!);\n if (this.#done) return Promise.resolve(null);\n if (!this.#attached)\n throw new Error('captureEvents: attach() a child before iterating');\n return new Promise(resolve => this.#waiters.push(resolve));\n }\n}\n\nexport function captureEvents(options?: CaptureOptions): EventCapture {\n return new EventCapture(options);\n}\n"],"names":["EventCapture","options","eventFilter","index","attached","done","events","waiters","constructor","this","compileEventFilter","filter","spawnOptions","stdio","Array","isArray","length","push","env","process","LOG_EVENTS_ENV","attach","child","Error","stream","setEncoding","pending","on","chunk","data","start","end","indexOf","line","slice","ingest","finish","notify","collect","event","Symbol","asyncIterator","next","parseEventLine","waiter","shift","Promise","resolve","captureEvents"],"mappings":";;;;AAeO,MAAMA;EACXC;EACAC;EACAC;EACAC,IAAY;EACZC,IAAQ;EACRC,GAAyB;EACzBC,GAAuD;EAEvDC,WAAAA,CAAYP,IAA0B;IACpCQ,MAAKR,IAAWA;IAChBQ,MAAKP,IAAeQ,EAAmBT,EAAQU;AACjD;EAEAC,YAAAA,CACEX;IAEA,MAAMY,IAAmDC,MAAMC,QAC7Dd,GAASY,SAEP,KAAIZ,EAAQY,UACM,QAAlBZ,GAASY,QACP,EAACZ,EAAQY,OAAOZ,EAAQY,OAAOZ,EAAQY,UACvC;IACN,OAAOA,EAAMG,SAAS;MAAGH,EAAMI,KAAK;;IACpCR,MAAKN,IAASU,EAAMG;IACpBH,EAAMI,KAAK;IACX,OAAO;SACDhB;MACJY;MACAK,KAAK;WACCjB,GAASiB,OAAOC,QAAQD;QAC5BE,CAACA,IAAiB,GAAGX,MAAKN;;;AAGhC;EAEAkB,MAAAA,CAAOC;IACL,IAAmB,QAAfb,MAAKN;MACP,MAAM,IAAIoB,MACR;;IAEJ,IAAId,MAAKL;MACP,MAAM,IAAImB,MAAM;;IAClB,MAAMC,IAASF,EAAMT,MAAMJ,MAAKN;IAChC,KAAKqB,KAAwC,qBAAvBA,EAAOC;MAC3B,MAAM,IAAIF,MACR,8BAA8Bd,MAAKN;;IAEvCM,MAAKL,KAAY;IAEjB,IAAIsB,IAAU;IACdF,EAAOC,YAAY;IACnBD,EAAOG,GAAG,QAASC;MACjB,MAAMC,IAAOH,IAAUA,IAAUE,IAAQA;MACzC,IAAIE,IAAQ;MACZ,IAAIC;MACJ,eAAQA,IAAMF,EAAKG,QAAQ,MAAMF,KAAgB;QAC/C,MAAMG,IAAOJ,EAAKK,MAAMJ,GAAOC;QAC/BD,IAAQC,IAAM;QACd,IAAIE;UAAMxB,MAAK0B,EAAQF;;AACzB;MACAP,IAAUI,IAAQD,EAAKK,MAAMJ,KAASD;;IAGxC,MAAMO,SAASA;MACb,IAAI3B,MAAKJ;QAAO;;MAChBI,MAAKJ,KAAQ;MACb,IAAIqB;QAASjB,MAAK0B,EAAQT;;MAC1BjB,MAAK4B,EAAQ;;IAEfb,EAAOG,GAAG,OAAOS;IACjBZ,EAAOG,GAAG,SAASS;IACnBZ,EAAOG,GAAG,SAASS;IACnB,OAAO3B;AACT;EAEA,aAAM6B;IACJ,MAAMhC,IAAwB;IAC9B,WAAW,MAAMiC,KAAS9B;MAAMH,EAAOW,KAAKsB;;IAC5C,OAAOjC;AACT;EAEA,QAAQkC,OAAOC;IACb,IAAIF;IACJ,OAAQA,UAAc9B,MAAKiC;YAAgBH;;AAC7C;EAEA,EAAAJ,CAAQF;IACN,MAAMM,IAAQI,EAAeV,GAAMxB,MAAKR,GAAUQ,MAAKP;IACvD,IAAIqC;MAAO9B,MAAK4B,EAAQE;;AAC1B;EAEA,EAAAF,CAAQE;IACN,MAAMK,IAASnC,MAAKF,EAASsC;IAC7B,IAAID;MAAQA,EAAOL;WACd,IAAIA;MAAO9B,MAAKH,EAAQW,KAAKsB;;AACpC;EAEA,EAAAG;IACE,IAAIjC,MAAKH,EAAQU;MAAQ,OAAO8B,QAAQC,QAAQtC,MAAKH,EAAQuC;;IAC7D,IAAIpC,MAAKJ;MAAO,OAAOyC,QAAQC,QAAQ;;IACvC,KAAKtC,MAAKL;MACR,MAAM,IAAImB,MAAM;;IAClB,OAAO,IAAIuB,QAAQC,KAAWtC,MAAKF,EAASU,KAAK8B;AACnD;;;AAGK,SAASC,cAAc/C;EAC5B,OAAO,IAAID,aAAaC;AAC1B;;"}
1
+ {"version":3,"file":"2g-api.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/2g.js CHANGED
@@ -251,14 +251,14 @@ class LogStream extends c.EventEmitter {
251
251
  #m=!1;
252
252
  #S=!1;
253
253
  #v;
254
- #w=(e, t) => {
255
- this.#E(e, t);
254
+ #E=(e, t) => {
255
+ this.#w(e, t);
256
256
  };
257
257
  #_=e => {
258
258
  if (null != e) {
259
259
  this.#k(e);
260
260
  } else {
261
- this.#E(null, o.Buffer.byteLength(this.#u));
261
+ this.#w(null, o.Buffer.byteLength(this.#u));
262
262
  }
263
263
  };
264
264
  #L=() => {
@@ -336,7 +336,7 @@ class LogStream extends c.EventEmitter {
336
336
  setTimeout(() => this.#b(), this.#y);
337
337
  }
338
338
  }
339
- #E(e, t) {
339
+ #w(e, t) {
340
340
  if (e) {
341
341
  if ("EAGAIN" === e.code || "EBUSY" === e.code) {
342
342
  this.#P(e);
@@ -491,7 +491,7 @@ class LogStream extends c.EventEmitter {
491
491
  if (null != this.#v && (this.#m || this.#e < 0)) {
492
492
  this.#v(this.#u, this.#_);
493
493
  } else {
494
- s.write(this.#e, this.#u, this.#w);
494
+ s.write(this.#e, this.#u, this.#E);
495
495
  }
496
496
  }
497
497
  _end() {
@@ -681,11 +681,11 @@ class SocketSink {
681
681
 
682
682
  class BroadcastChannel {
683
683
  #C;
684
- #V=[];
684
+ #D=[];
685
685
  #l=!1;
686
686
  constructor(e) {
687
687
  this.#C = e;
688
- this.#V.push({
688
+ this.#D.push({
689
689
  sink: e,
690
690
  dropOnBackpressure: !1,
691
691
  destroy: () => e.destroy()
@@ -695,8 +695,8 @@ class BroadcastChannel {
695
695
  if (this.#l) {
696
696
  return !1;
697
697
  }
698
- for (let e = 0; e < this.#V.length; e++) {
699
- if (this.#V[e].sink.writable) {
698
+ for (let e = 0; e < this.#D.length; e++) {
699
+ if (this.#D[e].sink.writable) {
700
700
  return !0;
701
701
  }
702
702
  }
@@ -709,7 +709,7 @@ class BroadcastChannel {
709
709
  if (this.#l) {
710
710
  e.destroy();
711
711
  } else {
712
- this.#V.push({
712
+ this.#D.push({
713
713
  sink: e,
714
714
  dropOnBackpressure: !1,
715
715
  destroy: () => e.destroy()
@@ -741,11 +741,11 @@ class BroadcastChannel {
741
741
  e.destroy();
742
742
  }
743
743
  };
744
- this.#V.push(i);
744
+ this.#D.push(i);
745
745
  const detach = () => {
746
- const e = this.#V.indexOf(i);
746
+ const e = this.#D.indexOf(i);
747
747
  if (e > -1) {
748
- this.#V.splice(e, 1);
748
+ this.#D.splice(e, 1);
749
749
  }
750
750
  i.destroy();
751
751
  };
@@ -772,7 +772,7 @@ class BroadcastChannel {
772
772
  e.on("error", () => {});
773
773
  }
774
774
  _writeln(e) {
775
- const t = this.#V;
775
+ const t = this.#D;
776
776
  let i = !1;
777
777
  for (let s = t.length - 1; s >= 0; s--) {
778
778
  const n = t[s];
@@ -793,17 +793,17 @@ class BroadcastChannel {
793
793
  }
794
794
  }
795
795
  end(e) {
796
- for (const t of this.#V) {
796
+ for (const t of this.#D) {
797
797
  t.sink.end(t.sink === this.#C ? e : void 0);
798
798
  }
799
799
  return this;
800
800
  }
801
801
  destroy() {
802
802
  this.#l = !0;
803
- for (const e of this.#V) {
803
+ for (const e of this.#D) {
804
804
  e.destroy();
805
805
  }
806
- this.#V.length = 0;
806
+ this.#D.length = 0;
807
807
  }
808
808
  }
809
809
 
@@ -916,13 +916,13 @@ function createSession(t) {
916
916
  });
917
917
  s.chmodSync(r, 448);
918
918
  } catch {}
919
- const h = t.maxSegments ?? i.DEFAULT_SEGMENTS;
920
- const a = t.maxSegmentSize ?? i.DEFAULT_SEGMENT_SIZE;
921
- const u = i.createSocketAddress(l, c, "live");
922
- const d = i.createSocketAddress(l, c, "ipc");
923
- const f = new LogStream(e.join(l, "0.jsonl"));
924
- const g = new BroadcastChannel(f);
925
- g.add(createDebugSink());
919
+ const h = t.maxSegments ?? (a.debug ? i.DEBUG_SEGMENTS : i.DEFAULT_SEGMENTS);
920
+ const u = t.maxSegmentSize ?? (a.debug ? i.DEBUG_SEGMENT_SIZE : i.DEFAULT_SEGMENT_SIZE);
921
+ const d = i.createSocketAddress(l, c, "live");
922
+ const f = i.createSocketAddress(l, c, "ipc");
923
+ const g = new LogStream(e.join(l, "0.jsonl"));
924
+ const p = new BroadcastChannel(g);
925
+ p.add(createDebugSink());
926
926
  !function trackSegmentRotation(t, i, n, r) {
927
927
  let o = 0;
928
928
  t.on("write", c => {
@@ -945,19 +945,19 @@ function createSession(t) {
945
945
  }(i, n);
946
946
  t.reopen();
947
947
  });
948
- }(f, l, h, a);
949
- const p = n.createServer(e => g.attach(e));
950
- const y = n.createServer(e => g.ingest(e));
951
- const m = i.listenSocket(p, u.path);
948
+ }(g, l, h, u);
949
+ const y = n.createServer(e => p.attach(e));
950
+ const m = n.createServer(e => p.ingest(e));
952
951
  const S = i.listenSocket(y, d.path);
953
- const v = function publishIpcPath(e) {
952
+ const v = i.listenSocket(m, f.path);
953
+ const E = function publishIpcPath(e) {
954
954
  process.env[i.INTERNAL_IPC_ENV] = e;
955
955
  return () => {
956
956
  if (process.env[i.INTERNAL_IPC_ENV] === e) {
957
957
  delete process.env[i.INTERNAL_IPC_ENV];
958
958
  }
959
959
  };
960
- }(d.path);
960
+ }(f.path);
961
961
  const w = function publishProcessOrigin() {
962
962
  const e = String(process.pid);
963
963
  process.env[i.INTERNAL_PROCESS_ORIGIN_ENV] = e;
@@ -969,7 +969,7 @@ function createSession(t) {
969
969
  setLocalProcessOrigin(void 0);
970
970
  };
971
971
  }();
972
- const E = {
972
+ const _ = {
973
973
  pid: process.pid,
974
974
  formatVersion: i.EVENT_LOG_FORMAT_VERSION,
975
975
  startedAt: o,
@@ -977,8 +977,8 @@ function createSession(t) {
977
977
  cwd: process.cwd(),
978
978
  maxSegments: h,
979
979
  version: t.version,
980
- socket: u.name,
981
- ipcSocket: d.name,
980
+ socket: d.name,
981
+ ipcSocket: f.name,
982
982
  origin: createSessionOrigin()
983
983
  };
984
984
  try {
@@ -988,21 +988,21 @@ function createSession(t) {
988
988
  mode: 384
989
989
  });
990
990
  s.renameSync(i, e);
991
- }(e.join(l, i.SESSION_FILES.meta), E);
991
+ }(e.join(l, i.SESSION_FILES.meta), _);
992
992
  } catch {}
993
- let _ = !1;
993
+ let k = !1;
994
994
  const destroy = () => {
995
- if (_) {
995
+ if (k) {
996
996
  return;
997
997
  }
998
- _ = !0;
999
- g.destroy();
1000
- m();
998
+ k = !0;
999
+ p.destroy();
1001
1000
  S();
1002
1001
  v();
1002
+ E();
1003
1003
  w();
1004
- i.removeSocket(u.path);
1005
1004
  i.removeSocket(d.path);
1005
+ i.removeSocket(f.path);
1006
1006
  };
1007
1007
  !function registerProcessCleanup(e) {
1008
1008
  const t = getProcessCleanupState();
@@ -1029,8 +1029,8 @@ function createSession(t) {
1029
1029
  });
1030
1030
  return {
1031
1031
  sessionDir: l,
1032
- meta: E,
1033
- sink: g,
1032
+ meta: _,
1033
+ sink: p,
1034
1034
  destroy
1035
1035
  };
1036
1036
  }