@bastani/atomic 0.9.28-alpha.4 → 0.9.28-alpha.5
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 +16 -0
- package/dist/builtin/intercom/CHANGELOG.md +6 -0
- package/dist/builtin/intercom/README.md +3 -2
- package/dist/builtin/intercom/broker/broker.ts +90 -14
- package/dist/builtin/intercom/broker/paths.ts +4 -0
- package/dist/builtin/intercom/broker/socket-liveness.ts +32 -0
- package/dist/builtin/intercom/broker/socket-replacement-lock.ts +104 -0
- package/dist/builtin/intercom/broker/spawn.ts +108 -63
- package/dist/builtin/intercom/index.bundle.mjs +114 -61
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +6 -0
- package/dist/builtin/workflows/builtin/{chunk-aqv8ny38.js → chunk-9ywkdsa9.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-p6jagvyf.js → chunk-bnz4knhy.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-br4ac9a3.js → chunk-dx5sjaxe.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-p3xmajmj.js → chunk-v4scsq3y.js} +41 -13
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +3 -3
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +38 -14
- package/dist/builtin/workflows/src/index.js +38 -14
- package/dist/cli/startup-ui.d.ts +3 -2
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +19 -4
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +5 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +13 -9
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/extensions/session-events.d.ts +2 -0
- package/dist/core/extensions/session-events.d.ts.map +1 -1
- package/dist/core/extensions/session-events.js.map +1 -1
- package/dist/core/provider-alias.d.ts.map +1 -1
- package/dist/core/provider-alias.js +8 -0
- package/dist/core/provider-alias.js.map +1 -1
- package/dist/core/provider-composer-internal.d.ts.map +1 -1
- package/dist/core/provider-composer-internal.js +6 -3
- package/dist/core/provider-composer-internal.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +1 -0
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +1 -0
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/extensions/herdr/index.d.ts.map +1 -1
- package/dist/extensions/herdr/index.js +20 -2
- package/dist/extensions/herdr/index.js.map +1 -1
- package/dist/extensions/herdr/pane-owner.d.ts +7 -0
- package/dist/extensions/herdr/pane-owner.d.ts.map +1 -1
- package/dist/extensions/herdr/pane-owner.js +53 -11
- package/dist/extensions/herdr/pane-owner.js.map +1 -1
- package/dist/main-deferred-startup.d.ts +8 -0
- package/dist/main-deferred-startup.d.ts.map +1 -1
- package/dist/main-deferred-startup.js +6 -0
- package/dist/main-deferred-startup.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +11 -3
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +2 -2
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-dialogs.js +8 -0
- package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +1 -0
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
- package/dist/modes/interactive/interactive-process-lifecycle.js +1 -1
- package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
- package/dist/modes/interactive/interactive-startup-trust.d.ts +6 -0
- package/dist/modes/interactive/interactive-startup-trust.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-startup-trust.js +15 -0
- package/dist/modes/interactive/interactive-startup-trust.js.map +1 -0
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +3 -0
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive-engine/engine-child-liveness.d.ts +1 -0
- package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-child-liveness.js +15 -1
- package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -1
- package/dist/modes/interactive-engine/engine-monitor.d.ts +4 -0
- package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-monitor.js +17 -0
- package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
- package/dist/modes/interactive-engine/engine-quit-intent.d.ts +16 -0
- package/dist/modes/interactive-engine/engine-quit-intent.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-quit-intent.js +27 -0
- package/dist/modes/interactive-engine/engine-quit-intent.js.map +1 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +1 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.js +5 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +4 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +19 -2
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts +18 -1
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +6 -0
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +11 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +42 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.js +2 -2
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +23 -6
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/docs/extensions/events.md +3 -0
- package/docs/herdr.md +11 -2
- package/docs/models.md +1 -1
- package/docs/providers.md +2 -0
- package/docs/sdk.md +1 -1
- package/docs/settings.md +1 -1
- package/npm-shrinkwrap.json +32 -32
- package/package.json +3 -3
|
@@ -38352,6 +38352,7 @@ class PostgresHealth {
|
|
|
38352
38352
|
attempts = 0;
|
|
38353
38353
|
nextRecoveryAt = 0;
|
|
38354
38354
|
failure;
|
|
38355
|
+
failureUnanswered = false;
|
|
38355
38356
|
healthySinceFailure = false;
|
|
38356
38357
|
revision = 0;
|
|
38357
38358
|
listeners = new Set;
|
|
@@ -38364,10 +38365,11 @@ class PostgresHealth {
|
|
|
38364
38365
|
get endpoint() {
|
|
38365
38366
|
return this.operations.url?.();
|
|
38366
38367
|
}
|
|
38367
|
-
retainFailure(error) {
|
|
38368
|
+
retainFailure(error, unanswered = false) {
|
|
38368
38369
|
const message = error instanceof Error ? error.message : String(error);
|
|
38369
38370
|
const safe = redactedDatabaseMessage(message, this.endpoint);
|
|
38370
38371
|
this.failure = new Error(safe);
|
|
38372
|
+
this.failureUnanswered = unanswered;
|
|
38371
38373
|
this.healthySinceFailure = false;
|
|
38372
38374
|
}
|
|
38373
38375
|
dependencyFailure(message) {
|
|
@@ -38395,7 +38397,7 @@ class PostgresHealth {
|
|
|
38395
38397
|
await this.operations.validate?.(client);
|
|
38396
38398
|
}
|
|
38397
38399
|
} catch (error) {
|
|
38398
|
-
this.retainFailure(error);
|
|
38400
|
+
this.retainFailure(error, isQueryReadTimeout(error));
|
|
38399
38401
|
if (!isQueryReadTimeout(error)) {
|
|
38400
38402
|
this.invalidate();
|
|
38401
38403
|
if (this.endpoint === undefined)
|
|
@@ -38433,19 +38435,39 @@ class PostgresHealth {
|
|
|
38433
38435
|
}
|
|
38434
38436
|
async probe() {
|
|
38435
38437
|
const revision = this.revision;
|
|
38438
|
+
const now = this.operations.now ?? Date.now;
|
|
38439
|
+
const wait = this.operations.wait ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
38436
38440
|
let identity;
|
|
38437
38441
|
try {
|
|
38438
38442
|
identity = await this.operations.probe();
|
|
38439
38443
|
} catch (error) {
|
|
38440
38444
|
if (!(isMonitoringConnectionFailure(error) || isQueryReadTimeout(error)) || this.stopped)
|
|
38441
38445
|
throw error;
|
|
38442
|
-
|
|
38443
|
-
|
|
38444
|
-
|
|
38445
|
-
|
|
38446
|
-
|
|
38447
|
-
|
|
38448
|
-
|
|
38446
|
+
const deadline = now() + MONITORING_PROBE_RETRY_WINDOW_MS;
|
|
38447
|
+
let delay = MONITORING_PROBE_RETRY_INITIAL_MS;
|
|
38448
|
+
let failure = error;
|
|
38449
|
+
for (;; ) {
|
|
38450
|
+
if (isMonitoringConnectionTimeout(failure) || isQueryReadTimeout(failure)) {
|
|
38451
|
+
if (now() >= deadline)
|
|
38452
|
+
throw failure;
|
|
38453
|
+
await wait(delay);
|
|
38454
|
+
delay = Math.min(delay * 2, MONITORING_PROBE_RETRY_MAX_MS);
|
|
38455
|
+
if (this.stopped)
|
|
38456
|
+
throw failure;
|
|
38457
|
+
}
|
|
38458
|
+
try {
|
|
38459
|
+
identity = await this.operations.probe();
|
|
38460
|
+
break;
|
|
38461
|
+
} catch (retryError) {
|
|
38462
|
+
if (isMonitoringConnectionTimeout(retryError) || isQueryReadTimeout(retryError)) {
|
|
38463
|
+
failure = retryError;
|
|
38464
|
+
continue;
|
|
38465
|
+
}
|
|
38466
|
+
if (!isMonitoringConnectionFailure(retryError))
|
|
38467
|
+
throw retryError;
|
|
38468
|
+
this.retainFailure(retryError);
|
|
38469
|
+
return;
|
|
38470
|
+
}
|
|
38449
38471
|
}
|
|
38450
38472
|
}
|
|
38451
38473
|
if (revision !== this.revision)
|
|
@@ -38460,6 +38482,8 @@ class PostgresHealth {
|
|
|
38460
38482
|
this.attempts = 0;
|
|
38461
38483
|
this.nextRecoveryAt = 0;
|
|
38462
38484
|
this.healthySinceFailure = true;
|
|
38485
|
+
if (this.failureUnanswered)
|
|
38486
|
+
this.failure = undefined;
|
|
38463
38487
|
return identity.url;
|
|
38464
38488
|
}
|
|
38465
38489
|
async refresh() {
|
|
@@ -38469,7 +38493,7 @@ class PostgresHealth {
|
|
|
38469
38493
|
return ready;
|
|
38470
38494
|
} catch (error) {
|
|
38471
38495
|
if (isQueryReadTimeout(error) || isMonitoringConnectionTimeout(error)) {
|
|
38472
|
-
this.retainFailure(new Error("Managed PostgreSQL did not answer a health check in time."));
|
|
38496
|
+
this.retainFailure(new Error("Managed PostgreSQL did not answer a health check in time."), true);
|
|
38473
38497
|
throw this.dependencyFailure("Managed PostgreSQL did not answer a health check in time.");
|
|
38474
38498
|
}
|
|
38475
38499
|
this.retainFailure(error);
|
|
@@ -38504,7 +38528,7 @@ class PostgresHealth {
|
|
|
38504
38528
|
throw this.dependencyFailure("Managed Postgres is unavailable after bounded recovery. Preserve its data and ownership records.");
|
|
38505
38529
|
}
|
|
38506
38530
|
}
|
|
38507
|
-
var HEALTH_INTERVAL_MS = 5000, RECOVERY_ATTEMPTS = 3;
|
|
38531
|
+
var HEALTH_INTERVAL_MS = 5000, RECOVERY_ATTEMPTS = 3, MONITORING_PROBE_RETRY_WINDOW_MS = 15000, MONITORING_PROBE_RETRY_INITIAL_MS = 250, MONITORING_PROBE_RETRY_MAX_MS = 2000;
|
|
38508
38532
|
var init_dbos_postgres_health = __esm(() => {
|
|
38509
38533
|
init_dbos_admission();
|
|
38510
38534
|
});
|
|
@@ -38742,7 +38766,7 @@ async function probePostgresTimezoneData(port) {
|
|
|
38742
38766
|
password: "atomic",
|
|
38743
38767
|
database: "postgres",
|
|
38744
38768
|
ssl: false,
|
|
38745
|
-
connectionTimeoutMillis:
|
|
38769
|
+
connectionTimeoutMillis: POSTGRES_HEALTH_CONNECT_TIMEOUT_MS,
|
|
38746
38770
|
query_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS,
|
|
38747
38771
|
statement_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS
|
|
38748
38772
|
});
|
|
@@ -38762,7 +38786,7 @@ async function probePostgresIdentity(port) {
|
|
|
38762
38786
|
password: "atomic",
|
|
38763
38787
|
database: "postgres",
|
|
38764
38788
|
ssl: false,
|
|
38765
|
-
connectionTimeoutMillis:
|
|
38789
|
+
connectionTimeoutMillis: POSTGRES_HEALTH_CONNECT_TIMEOUT_MS,
|
|
38766
38790
|
query_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS,
|
|
38767
38791
|
statement_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS
|
|
38768
38792
|
});
|
|
@@ -38838,7 +38862,7 @@ async function verifyPostgresIdentity(metadata, port, expectedPid, probe = probe
|
|
|
38838
38862
|
var POSTGRES_IDENTITY_SQL = `SELECT current_setting('data_directory') AS data_dir,
|
|
38839
38863
|
inet_server_port() AS port, host(inet_server_addr()) AS host,
|
|
38840
38864
|
split_part(pg_read_file('postmaster.pid'), E'\\n', 3) AS started,
|
|
38841
|
-
system_identifier::text, current_setting('server_version') AS server_version FROM pg_control_system()`, POSTGRES_TIMEZONE_SQL = "SELECT set_config('timezone_abbreviations', 'Default', true)", POSTGRES_HEALTH_QUERY_TIMEOUT_MS = 3000;
|
|
38865
|
+
system_identifier::text, current_setting('server_version') AS server_version FROM pg_control_system()`, POSTGRES_TIMEZONE_SQL = "SELECT set_config('timezone_abbreviations', 'Default', true)", POSTGRES_HEALTH_QUERY_TIMEOUT_MS = 3000, POSTGRES_HEALTH_CONNECT_TIMEOUT_MS = 3000;
|
|
38842
38866
|
var init_dbos_postgres_identity = __esm(() => {
|
|
38843
38867
|
init_esm();
|
|
38844
38868
|
init_dbos_postgres_health();
|
|
@@ -36837,6 +36837,7 @@ class PostgresHealth {
|
|
|
36837
36837
|
attempts = 0;
|
|
36838
36838
|
nextRecoveryAt = 0;
|
|
36839
36839
|
failure;
|
|
36840
|
+
failureUnanswered = false;
|
|
36840
36841
|
healthySinceFailure = false;
|
|
36841
36842
|
revision = 0;
|
|
36842
36843
|
listeners = new Set;
|
|
@@ -36849,10 +36850,11 @@ class PostgresHealth {
|
|
|
36849
36850
|
get endpoint() {
|
|
36850
36851
|
return this.operations.url?.();
|
|
36851
36852
|
}
|
|
36852
|
-
retainFailure(error) {
|
|
36853
|
+
retainFailure(error, unanswered = false) {
|
|
36853
36854
|
const message = error instanceof Error ? error.message : String(error);
|
|
36854
36855
|
const safe = redactedDatabaseMessage(message, this.endpoint);
|
|
36855
36856
|
this.failure = new Error(safe);
|
|
36857
|
+
this.failureUnanswered = unanswered;
|
|
36856
36858
|
this.healthySinceFailure = false;
|
|
36857
36859
|
}
|
|
36858
36860
|
dependencyFailure(message) {
|
|
@@ -36880,7 +36882,7 @@ class PostgresHealth {
|
|
|
36880
36882
|
await this.operations.validate?.(client);
|
|
36881
36883
|
}
|
|
36882
36884
|
} catch (error) {
|
|
36883
|
-
this.retainFailure(error);
|
|
36885
|
+
this.retainFailure(error, isQueryReadTimeout(error));
|
|
36884
36886
|
if (!isQueryReadTimeout(error)) {
|
|
36885
36887
|
this.invalidate();
|
|
36886
36888
|
if (this.endpoint === undefined)
|
|
@@ -36918,19 +36920,39 @@ class PostgresHealth {
|
|
|
36918
36920
|
}
|
|
36919
36921
|
async probe() {
|
|
36920
36922
|
const revision = this.revision;
|
|
36923
|
+
const now = this.operations.now ?? Date.now;
|
|
36924
|
+
const wait = this.operations.wait ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
36921
36925
|
let identity;
|
|
36922
36926
|
try {
|
|
36923
36927
|
identity = await this.operations.probe();
|
|
36924
36928
|
} catch (error) {
|
|
36925
36929
|
if (!(isMonitoringConnectionFailure(error) || isQueryReadTimeout(error)) || this.stopped)
|
|
36926
36930
|
throw error;
|
|
36927
|
-
|
|
36928
|
-
|
|
36929
|
-
|
|
36930
|
-
|
|
36931
|
-
|
|
36932
|
-
|
|
36933
|
-
|
|
36931
|
+
const deadline = now() + MONITORING_PROBE_RETRY_WINDOW_MS;
|
|
36932
|
+
let delay = MONITORING_PROBE_RETRY_INITIAL_MS;
|
|
36933
|
+
let failure = error;
|
|
36934
|
+
for (;; ) {
|
|
36935
|
+
if (isMonitoringConnectionTimeout(failure) || isQueryReadTimeout(failure)) {
|
|
36936
|
+
if (now() >= deadline)
|
|
36937
|
+
throw failure;
|
|
36938
|
+
await wait(delay);
|
|
36939
|
+
delay = Math.min(delay * 2, MONITORING_PROBE_RETRY_MAX_MS);
|
|
36940
|
+
if (this.stopped)
|
|
36941
|
+
throw failure;
|
|
36942
|
+
}
|
|
36943
|
+
try {
|
|
36944
|
+
identity = await this.operations.probe();
|
|
36945
|
+
break;
|
|
36946
|
+
} catch (retryError) {
|
|
36947
|
+
if (isMonitoringConnectionTimeout(retryError) || isQueryReadTimeout(retryError)) {
|
|
36948
|
+
failure = retryError;
|
|
36949
|
+
continue;
|
|
36950
|
+
}
|
|
36951
|
+
if (!isMonitoringConnectionFailure(retryError))
|
|
36952
|
+
throw retryError;
|
|
36953
|
+
this.retainFailure(retryError);
|
|
36954
|
+
return;
|
|
36955
|
+
}
|
|
36934
36956
|
}
|
|
36935
36957
|
}
|
|
36936
36958
|
if (revision !== this.revision)
|
|
@@ -36945,6 +36967,8 @@ class PostgresHealth {
|
|
|
36945
36967
|
this.attempts = 0;
|
|
36946
36968
|
this.nextRecoveryAt = 0;
|
|
36947
36969
|
this.healthySinceFailure = true;
|
|
36970
|
+
if (this.failureUnanswered)
|
|
36971
|
+
this.failure = undefined;
|
|
36948
36972
|
return identity.url;
|
|
36949
36973
|
}
|
|
36950
36974
|
async refresh() {
|
|
@@ -36954,7 +36978,7 @@ class PostgresHealth {
|
|
|
36954
36978
|
return ready;
|
|
36955
36979
|
} catch (error) {
|
|
36956
36980
|
if (isQueryReadTimeout(error) || isMonitoringConnectionTimeout(error)) {
|
|
36957
|
-
this.retainFailure(new Error("Managed PostgreSQL did not answer a health check in time."));
|
|
36981
|
+
this.retainFailure(new Error("Managed PostgreSQL did not answer a health check in time."), true);
|
|
36958
36982
|
throw this.dependencyFailure("Managed PostgreSQL did not answer a health check in time.");
|
|
36959
36983
|
}
|
|
36960
36984
|
this.retainFailure(error);
|
|
@@ -36989,7 +37013,7 @@ class PostgresHealth {
|
|
|
36989
37013
|
throw this.dependencyFailure("Managed Postgres is unavailable after bounded recovery. Preserve its data and ownership records.");
|
|
36990
37014
|
}
|
|
36991
37015
|
}
|
|
36992
|
-
var HEALTH_INTERVAL_MS = 5000, RECOVERY_ATTEMPTS = 3;
|
|
37016
|
+
var HEALTH_INTERVAL_MS = 5000, RECOVERY_ATTEMPTS = 3, MONITORING_PROBE_RETRY_WINDOW_MS = 15000, MONITORING_PROBE_RETRY_INITIAL_MS = 250, MONITORING_PROBE_RETRY_MAX_MS = 2000;
|
|
36993
37017
|
var init_dbos_postgres_health = __esm(() => {
|
|
36994
37018
|
init_dbos_admission();
|
|
36995
37019
|
});
|
|
@@ -37227,7 +37251,7 @@ async function probePostgresTimezoneData(port) {
|
|
|
37227
37251
|
password: "atomic",
|
|
37228
37252
|
database: "postgres",
|
|
37229
37253
|
ssl: false,
|
|
37230
|
-
connectionTimeoutMillis:
|
|
37254
|
+
connectionTimeoutMillis: POSTGRES_HEALTH_CONNECT_TIMEOUT_MS,
|
|
37231
37255
|
query_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS,
|
|
37232
37256
|
statement_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS
|
|
37233
37257
|
});
|
|
@@ -37247,7 +37271,7 @@ async function probePostgresIdentity(port) {
|
|
|
37247
37271
|
password: "atomic",
|
|
37248
37272
|
database: "postgres",
|
|
37249
37273
|
ssl: false,
|
|
37250
|
-
connectionTimeoutMillis:
|
|
37274
|
+
connectionTimeoutMillis: POSTGRES_HEALTH_CONNECT_TIMEOUT_MS,
|
|
37251
37275
|
query_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS,
|
|
37252
37276
|
statement_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS
|
|
37253
37277
|
});
|
|
@@ -37323,7 +37347,7 @@ async function verifyPostgresIdentity(metadata, port, expectedPid, probe = probe
|
|
|
37323
37347
|
var POSTGRES_IDENTITY_SQL = `SELECT current_setting('data_directory') AS data_dir,
|
|
37324
37348
|
inet_server_port() AS port, host(inet_server_addr()) AS host,
|
|
37325
37349
|
split_part(pg_read_file('postmaster.pid'), E'\\n', 3) AS started,
|
|
37326
|
-
system_identifier::text, current_setting('server_version') AS server_version FROM pg_control_system()`, POSTGRES_TIMEZONE_SQL = "SELECT set_config('timezone_abbreviations', 'Default', true)", POSTGRES_HEALTH_QUERY_TIMEOUT_MS = 3000;
|
|
37350
|
+
system_identifier::text, current_setting('server_version') AS server_version FROM pg_control_system()`, POSTGRES_TIMEZONE_SQL = "SELECT set_config('timezone_abbreviations', 'Default', true)", POSTGRES_HEALTH_QUERY_TIMEOUT_MS = 3000, POSTGRES_HEALTH_CONNECT_TIMEOUT_MS = 3000;
|
|
37327
37351
|
var init_dbos_postgres_identity = __esm(() => {
|
|
37328
37352
|
init_esm();
|
|
37329
37353
|
init_dbos_postgres_health();
|
package/dist/cli/startup-ui.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type TUI } from "@earendil-works/pi-tui";
|
|
2
|
+
import type { ExtensionUIDialogOptions } from "../core/extensions/index.js";
|
|
2
3
|
import type { SettingsManager } from "../core/settings-manager.ts";
|
|
3
4
|
import { type TerminalTheme } from "../modes/interactive/theme/theme.js";
|
|
4
5
|
/**
|
|
@@ -13,6 +14,6 @@ export declare function showFirstTimeSetup(settingsManager: SettingsManager): Pr
|
|
|
13
14
|
export declare function showStartupSelector<T>(settingsManager: SettingsManager, title: string, options: Array<{
|
|
14
15
|
label: string;
|
|
15
16
|
value: T;
|
|
16
|
-
}
|
|
17
|
-
export declare function showStartupInput(settingsManager: SettingsManager, title: string, placeholder?: string): Promise<string | undefined>;
|
|
17
|
+
}>, dialogOptions?: ExtensionUIDialogOptions): Promise<T | undefined>;
|
|
18
|
+
export declare function showStartupInput(settingsManager: SettingsManager, title: string, placeholder?: string, dialogOptions?: ExtensionUIDialogOptions): Promise<string | undefined>;
|
|
18
19
|
//# sourceMappingURL=startup-ui.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-ui.d.ts","sourceRoot":"","sources":["../../src/cli/startup-ui.ts"],"names":[],"mappings":"AACA,OAAO,EAIN,KAAK,GAAG,EAER,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"startup-ui.d.ts","sourceRoot":"","sources":["../../src/cli/startup-ui.ts"],"names":[],"mappings":"AACA,OAAO,EAIN,KAAK,GAAG,EAER,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAOnE,OAAO,EAIN,KAAK,aAAa,EAClB,MAAM,qCAAqC,CAAC;AAiB7C;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAExE;AAED,mGAAmG;AACnG,wBAAgB,uBAAuB,CAAC,YAAY,GAAE,MAA0B,GAAG,OAAO,CAEzF;AAED,wBAAsB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCxF;AAED,wBAAsB,mBAAmB,CAAC,CAAC,EAC1C,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC,EAC3C,aAAa,CAAC,EAAE,wBAAwB,GACtC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAkCxB;AAED,wBAAsB,gBAAgB,CACrC,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,wBAAwB,GACtC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkC7B"}
|
package/dist/cli/startup-ui.js
CHANGED
|
@@ -71,8 +71,12 @@ export async function showFirstTimeSetup(settingsManager) {
|
|
|
71
71
|
})();
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
|
-
export async function showStartupSelector(settingsManager, title, options) {
|
|
74
|
+
export async function showStartupSelector(settingsManager, title, options, dialogOptions) {
|
|
75
75
|
return new Promise((resolve) => {
|
|
76
|
+
if (dialogOptions?.signal?.aborted) {
|
|
77
|
+
resolve(undefined);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
76
80
|
const ui = createStartupTui(settingsManager);
|
|
77
81
|
let settled = false;
|
|
78
82
|
const finish = async (result) => {
|
|
@@ -80,18 +84,26 @@ export async function showStartupSelector(settingsManager, title, options) {
|
|
|
80
84
|
return;
|
|
81
85
|
}
|
|
82
86
|
settled = true;
|
|
87
|
+
dialogOptions?.signal?.removeEventListener("abort", abandon);
|
|
88
|
+
selector.dispose();
|
|
83
89
|
await clearStartupTui(ui);
|
|
84
90
|
ui.stop();
|
|
85
91
|
resolve(result);
|
|
86
92
|
};
|
|
87
|
-
const
|
|
93
|
+
const abandon = () => void finish(undefined);
|
|
94
|
+
dialogOptions?.signal?.addEventListener("abort", abandon, { once: true });
|
|
95
|
+
const selector = new ExtensionSelectorComponent(title, options.map((option) => option.label), (option) => void finish(options.find((entry) => entry.label === option)?.value), () => void finish(undefined), { tui: ui, timeout: dialogOptions?.timeout });
|
|
88
96
|
ui.addChild(selector);
|
|
89
97
|
ui.setFocus(selector);
|
|
90
98
|
ui.start();
|
|
91
99
|
});
|
|
92
100
|
}
|
|
93
|
-
export async function showStartupInput(settingsManager, title, placeholder) {
|
|
101
|
+
export async function showStartupInput(settingsManager, title, placeholder, dialogOptions) {
|
|
94
102
|
return new Promise((resolve) => {
|
|
103
|
+
if (dialogOptions?.signal?.aborted) {
|
|
104
|
+
resolve(undefined);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
95
107
|
const ui = createStartupTui(settingsManager);
|
|
96
108
|
let settled = false;
|
|
97
109
|
const finish = async (result) => {
|
|
@@ -99,12 +111,15 @@ export async function showStartupInput(settingsManager, title, placeholder) {
|
|
|
99
111
|
return;
|
|
100
112
|
}
|
|
101
113
|
settled = true;
|
|
114
|
+
dialogOptions?.signal?.removeEventListener("abort", abandon);
|
|
102
115
|
input.dispose();
|
|
103
116
|
await clearStartupTui(ui);
|
|
104
117
|
ui.stop();
|
|
105
118
|
resolve(result);
|
|
106
119
|
};
|
|
107
|
-
const
|
|
120
|
+
const abandon = () => void finish(undefined);
|
|
121
|
+
dialogOptions?.signal?.addEventListener("abort", abandon, { once: true });
|
|
122
|
+
const input = new ExtensionInputComponent(title, placeholder, (value) => void finish(value), () => void finish(undefined), { tui: ui, timeout: dialogOptions?.timeout });
|
|
108
123
|
ui.addChild(input);
|
|
109
124
|
ui.setFocus(input);
|
|
110
125
|
ui.start();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-ui.js","sourceRoot":"","sources":["../../src/cli/startup-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACN,eAAe,EACf,sBAAsB,EACtB,cAAc,EAEd,aAAa,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,EACN,uBAAuB,GAEvB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EACN,0BAA0B,EAC1B,SAAS,EACT,QAAQ,GAER,MAAM,qCAAqC,CAAC;AAE7C,SAAS,gBAAgB,CAAC,eAAgC;IACzD,sBAAsB,CAAC,eAAe,CAAC,8BAA8B,EAAE,CAAC,CAAC;IACzE,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtC,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,IAAI,eAAe,EAAE,EAAE,eAAe,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5G,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACxD,OAAO,EAAE,CAAC;AACX,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,EAAO;IACrC,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,EAAE,CAAC,aAAa,EAAE,CAAC;IACnB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAO;IAC/C,OAAO,0BAA0B,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,uBAAuB,CAAC,YAAY,GAAW,eAAe,EAAE;IAC/E,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,eAAgC;IACxE,MAAM,EAAE,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,KAAK,EAAE,MAAwC,EAAE,EAAE;YACjE,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,MAAM,EAAE,CAAC;gBACZ,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC1D,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC;YACD,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;YAC1B,EAAE,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QACF,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACnD,QAAQ,CAAC,aAAa,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,uBAAuB,CAAC;gBACzC,aAAa;gBACb,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;oBACxB,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACf,EAAE,CAAC,aAAa,EAAE,CAAC;gBACpB,CAAC;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;oBACpB,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrB,CAAC;gBACD,QAAQ,EAAE,GAAG,EAAE;oBACd,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;gBACxB,CAAC;aACD,CAAC,CAAC;YACH,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnB,EAAE,CAAC,aAAa,EAAE,CAAC;QACpB,CAAC,CAAC,EAAE,CAAC;IACN,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,eAAgC,EAChC,KAAa,EACb,OAA2C;IAE3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,EAAE,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAE7C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,KAAK,EAAE,MAAqB,EAAE,EAAE;YAC9C,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO;YACR,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;YAC1B,EAAE,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,0BAA0B,CAC9C,KAAK,EACL,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EACrC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,EAC/E,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,EAC5B,EAAE,GAAG,EAAE,EAAE,EAAE,CACX,CAAC;QACF,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtB,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,eAAgC,EAChC,KAAa,EACb,WAAoB;IAEpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,EAAE,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAE7C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,KAAK,EAAE,MAA0B,EAAE,EAAE;YACnD,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO;YACR,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;YAC1B,EAAE,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,uBAAuB,CACxC,KAAK,EACL,WAAW,EACX,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAC7B,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,EAC5B,EAAE,GAAG,EAAE,EAAE,EAAE,CACX,CAAC;QACF,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnB,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { existsSync } from \"node:fs\";\nimport {\n\tProcessTerminal,\n\tsetCapabilityOverrides,\n\tsetKeybindings,\n\ttype TUI,\n\tTuiMainScreen,\n} from \"@earendil-works/pi-tui\";\nimport { ENV_AGENT_DIR, getAgentDir, getEnvValue, getSettingsPath } from \"../config.js\";\nimport { KeybindingsManager } from \"../core/keybindings.ts\";\nimport type { SettingsManager } from \"../core/settings-manager.ts\";\nimport { ExtensionInputComponent } from \"../modes/interactive/components/extension-input.ts\";\nimport { ExtensionSelectorComponent } from \"../modes/interactive/components/extension-selector.ts\";\nimport {\n\tFirstTimeSetupComponent,\n\ttype FirstTimeSetupResult,\n} from \"../modes/interactive/components/first-time-setup.ts\";\nimport {\n\tdetectTerminalThemeForAuto,\n\tinitTheme,\n\tsetTheme,\n\ttype TerminalTheme,\n} from \"../modes/interactive/theme/theme.js\";\n\nfunction createStartupTui(settingsManager: SettingsManager): TUI {\n\tsetCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides());\n\tinitTheme(settingsManager.getTheme());\n\tsetKeybindings(KeybindingsManager.create());\n\tconst ui = new TuiMainScreen(new ProcessTerminal(), settingsManager.getShowHardwareCursor(), getAgentDir());\n\tui.setClearOnShrink(settingsManager.getClearOnShrink());\n\treturn ui;\n}\n\nasync function clearStartupTui(ui: TUI): Promise<void> {\n\tui.clear();\n\tui.requestRender();\n\tawait new Promise((resolve) => setTimeout(resolve, 25));\n}\n\n/**\n * Detect terminal appearance for first-run setup using one shared color query.\n * The terminal's background and foreground decide the result; unsupported\n * queries fall back to COLORFGBG and then dark.\n */\nexport async function detectStartupTheme(ui: TUI): Promise<TerminalTheme> {\n\treturn detectTerminalThemeForAuto({ ui, timeoutMs: 100 });\n}\n\n/** First-run setup is eligible only in the default agent directory before settings.json exists. */\nexport function shouldRunFirstTimeSetup(settingsPath: string = getSettingsPath()): boolean {\n\treturn !getEnvValue(ENV_AGENT_DIR) && !existsSync(settingsPath);\n}\n\nexport async function showFirstTimeSetup(settingsManager: SettingsManager): Promise<void> {\n\tconst ui = createStartupTui(settingsManager);\n\treturn new Promise((resolve) => {\n\t\tlet settled = false;\n\t\tconst finish = async (result: FirstTimeSetupResult | undefined) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tif (result) {\n\t\t\t\tsettingsManager.setTheme(result.theme);\n\t\t\t\tsettingsManager.setEnableAnalytics(result.shareAnalytics);\n\t\t\t\tawait settingsManager.flush();\n\t\t\t}\n\t\t\tawait clearStartupTui(ui);\n\t\t\tui.stop();\n\t\t\tresolve();\n\t\t};\n\t\tvoid (async () => {\n\t\t\tui.start();\n\t\t\tconst detectedTheme = await detectStartupTheme(ui);\n\t\t\tsetTheme(detectedTheme);\n\t\t\tconst setup = new FirstTimeSetupComponent({\n\t\t\t\tdetectedTheme,\n\t\t\t\tonThemePreview: (name) => {\n\t\t\t\t\tsetTheme(name);\n\t\t\t\t\tui.requestRender();\n\t\t\t\t},\n\t\t\t\tonSubmit: (result) => {\n\t\t\t\t\tvoid finish(result);\n\t\t\t\t},\n\t\t\t\tonCancel: () => {\n\t\t\t\t\tvoid finish(undefined);\n\t\t\t\t},\n\t\t\t});\n\t\t\tui.addChild(setup);\n\t\t\tui.setFocus(setup);\n\t\t\tui.requestRender();\n\t\t})();\n\t});\n}\n\nexport async function showStartupSelector<T>(\n\tsettingsManager: SettingsManager,\n\ttitle: string,\n\toptions: Array<{ label: string; value: T }>,\n): Promise<T | undefined> {\n\treturn new Promise((resolve) => {\n\t\tconst ui = createStartupTui(settingsManager);\n\n\t\tlet settled = false;\n\t\tconst finish = async (result: T | undefined) => {\n\t\t\tif (settled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettled = true;\n\t\t\tawait clearStartupTui(ui);\n\t\t\tui.stop();\n\t\t\tresolve(result);\n\t\t};\n\n\t\tconst selector = new ExtensionSelectorComponent(\n\t\t\ttitle,\n\t\t\toptions.map((option) => option.label),\n\t\t\t(option) => void finish(options.find((entry) => entry.label === option)?.value),\n\t\t\t() => void finish(undefined),\n\t\t\t{ tui: ui },\n\t\t);\n\t\tui.addChild(selector);\n\t\tui.setFocus(selector);\n\t\tui.start();\n\t});\n}\n\nexport async function showStartupInput(\n\tsettingsManager: SettingsManager,\n\ttitle: string,\n\tplaceholder?: string,\n): Promise<string | undefined> {\n\treturn new Promise((resolve) => {\n\t\tconst ui = createStartupTui(settingsManager);\n\n\t\tlet settled = false;\n\t\tconst finish = async (result: string | undefined) => {\n\t\t\tif (settled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettled = true;\n\t\t\tinput.dispose();\n\t\t\tawait clearStartupTui(ui);\n\t\t\tui.stop();\n\t\t\tresolve(result);\n\t\t};\n\n\t\tconst input = new ExtensionInputComponent(\n\t\t\ttitle,\n\t\t\tplaceholder,\n\t\t\t(value) => void finish(value),\n\t\t\t() => void finish(undefined),\n\t\t\t{ tui: ui },\n\t\t);\n\t\tui.addChild(input);\n\t\tui.setFocus(input);\n\t\tui.start();\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"startup-ui.js","sourceRoot":"","sources":["../../src/cli/startup-ui.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport {\n\tProcessTerminal,\n\tsetCapabilityOverrides,\n\tsetKeybindings,\n\ttype TUI,\n\tTuiMainScreen,\n} from \"@earendil-works/pi-tui\";\nimport { ENV_AGENT_DIR, getAgentDir, getEnvValue, getSettingsPath } from \"../config.js\";\nimport type { ExtensionUIDialogOptions } from \"../core/extensions/index.js\";\nimport { KeybindingsManager } from \"../core/keybindings.ts\";\nimport type { SettingsManager } from \"../core/settings-manager.ts\";\nimport { ExtensionInputComponent } from \"../modes/interactive/components/extension-input.ts\";\nimport { ExtensionSelectorComponent } from \"../modes/interactive/components/extension-selector.ts\";\nimport {\n\tFirstTimeSetupComponent,\n\ttype FirstTimeSetupResult,\n} from \"../modes/interactive/components/first-time-setup.ts\";\nimport {\n\tdetectTerminalThemeForAuto,\n\tinitTheme,\n\tsetTheme,\n\ttype TerminalTheme,\n} from \"../modes/interactive/theme/theme.js\";\n\nfunction createStartupTui(settingsManager: SettingsManager): TUI {\n\tsetCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides());\n\tinitTheme(settingsManager.getTheme());\n\tsetKeybindings(KeybindingsManager.create());\n\tconst ui = new TuiMainScreen(new ProcessTerminal(), settingsManager.getShowHardwareCursor(), getAgentDir());\n\tui.setClearOnShrink(settingsManager.getClearOnShrink());\n\treturn ui;\n}\n\nasync function clearStartupTui(ui: TUI): Promise<void> {\n\tui.clear();\n\tui.requestRender();\n\tawait new Promise((resolve) => setTimeout(resolve, 25));\n}\n\n/**\n * Detect terminal appearance for first-run setup using one shared color query.\n * The terminal's background and foreground decide the result; unsupported\n * queries fall back to COLORFGBG and then dark.\n */\nexport async function detectStartupTheme(ui: TUI): Promise<TerminalTheme> {\n\treturn detectTerminalThemeForAuto({ ui, timeoutMs: 100 });\n}\n\n/** First-run setup is eligible only in the default agent directory before settings.json exists. */\nexport function shouldRunFirstTimeSetup(settingsPath: string = getSettingsPath()): boolean {\n\treturn !getEnvValue(ENV_AGENT_DIR) && !existsSync(settingsPath);\n}\n\nexport async function showFirstTimeSetup(settingsManager: SettingsManager): Promise<void> {\n\tconst ui = createStartupTui(settingsManager);\n\treturn new Promise((resolve) => {\n\t\tlet settled = false;\n\t\tconst finish = async (result: FirstTimeSetupResult | undefined) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tif (result) {\n\t\t\t\tsettingsManager.setTheme(result.theme);\n\t\t\t\tsettingsManager.setEnableAnalytics(result.shareAnalytics);\n\t\t\t\tawait settingsManager.flush();\n\t\t\t}\n\t\t\tawait clearStartupTui(ui);\n\t\t\tui.stop();\n\t\t\tresolve();\n\t\t};\n\t\tvoid (async () => {\n\t\t\tui.start();\n\t\t\tconst detectedTheme = await detectStartupTheme(ui);\n\t\t\tsetTheme(detectedTheme);\n\t\t\tconst setup = new FirstTimeSetupComponent({\n\t\t\t\tdetectedTheme,\n\t\t\t\tonThemePreview: (name) => {\n\t\t\t\t\tsetTheme(name);\n\t\t\t\t\tui.requestRender();\n\t\t\t\t},\n\t\t\t\tonSubmit: (result) => {\n\t\t\t\t\tvoid finish(result);\n\t\t\t\t},\n\t\t\t\tonCancel: () => {\n\t\t\t\t\tvoid finish(undefined);\n\t\t\t\t},\n\t\t\t});\n\t\t\tui.addChild(setup);\n\t\t\tui.setFocus(setup);\n\t\t\tui.requestRender();\n\t\t})();\n\t});\n}\n\nexport async function showStartupSelector<T>(\n\tsettingsManager: SettingsManager,\n\ttitle: string,\n\toptions: Array<{ label: string; value: T }>,\n\tdialogOptions?: ExtensionUIDialogOptions,\n): Promise<T | undefined> {\n\treturn new Promise((resolve) => {\n\t\tif (dialogOptions?.signal?.aborted) {\n\t\t\tresolve(undefined);\n\t\t\treturn;\n\t\t}\n\t\tconst ui = createStartupTui(settingsManager);\n\n\t\tlet settled = false;\n\t\tconst finish = async (result: T | undefined) => {\n\t\t\tif (settled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettled = true;\n\t\t\tdialogOptions?.signal?.removeEventListener(\"abort\", abandon);\n\t\t\tselector.dispose();\n\t\t\tawait clearStartupTui(ui);\n\t\t\tui.stop();\n\t\t\tresolve(result);\n\t\t};\n\t\tconst abandon = () => void finish(undefined);\n\t\tdialogOptions?.signal?.addEventListener(\"abort\", abandon, { once: true });\n\n\t\tconst selector = new ExtensionSelectorComponent(\n\t\t\ttitle,\n\t\t\toptions.map((option) => option.label),\n\t\t\t(option) => void finish(options.find((entry) => entry.label === option)?.value),\n\t\t\t() => void finish(undefined),\n\t\t\t{ tui: ui, timeout: dialogOptions?.timeout },\n\t\t);\n\t\tui.addChild(selector);\n\t\tui.setFocus(selector);\n\t\tui.start();\n\t});\n}\n\nexport async function showStartupInput(\n\tsettingsManager: SettingsManager,\n\ttitle: string,\n\tplaceholder?: string,\n\tdialogOptions?: ExtensionUIDialogOptions,\n): Promise<string | undefined> {\n\treturn new Promise((resolve) => {\n\t\tif (dialogOptions?.signal?.aborted) {\n\t\t\tresolve(undefined);\n\t\t\treturn;\n\t\t}\n\t\tconst ui = createStartupTui(settingsManager);\n\n\t\tlet settled = false;\n\t\tconst finish = async (result: string | undefined) => {\n\t\t\tif (settled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettled = true;\n\t\t\tdialogOptions?.signal?.removeEventListener(\"abort\", abandon);\n\t\t\tinput.dispose();\n\t\t\tawait clearStartupTui(ui);\n\t\t\tui.stop();\n\t\t\tresolve(result);\n\t\t};\n\t\tconst abandon = () => void finish(undefined);\n\t\tdialogOptions?.signal?.addEventListener(\"abort\", abandon, { once: true });\n\n\t\tconst input = new ExtensionInputComponent(\n\t\t\ttitle,\n\t\t\tplaceholder,\n\t\t\t(value) => void finish(value),\n\t\t\t() => void finish(undefined),\n\t\t\t{ tui: ui, timeout: dialogOptions?.timeout },\n\t\t);\n\t\tui.addChild(input);\n\t\tui.setFocus(input);\n\t\tui.start();\n\t});\n}\n"]}
|
|
@@ -65,6 +65,7 @@ export declare class AgentSessionRuntime {
|
|
|
65
65
|
private beforeSessionInvalidate?;
|
|
66
66
|
private projectTrustContextFactory?;
|
|
67
67
|
private closed;
|
|
68
|
+
private endedBySignal;
|
|
68
69
|
private closing?;
|
|
69
70
|
private cleanupFailures;
|
|
70
71
|
private candidates;
|
|
@@ -119,6 +120,7 @@ export declare class AgentSessionRuntime {
|
|
|
119
120
|
setBeforeSessionInvalidate(beforeSessionInvalidate?: () => void): void;
|
|
120
121
|
private emitBeforeSwitch;
|
|
121
122
|
private emitBeforeFork;
|
|
123
|
+
private quitEvent;
|
|
122
124
|
private disposeCurrentSession;
|
|
123
125
|
/**
|
|
124
126
|
* Settle an active response before the session it belongs to is replaced, so the
|
|
@@ -165,7 +167,9 @@ export declare class AgentSessionRuntime {
|
|
|
165
167
|
importFromJsonl(inputPath: string, cwdOverride?: string): Promise<{
|
|
166
168
|
cancelled: boolean;
|
|
167
169
|
}>;
|
|
168
|
-
dispose(
|
|
170
|
+
dispose(options?: {
|
|
171
|
+
fromSignal?: boolean;
|
|
172
|
+
}): Promise<void>;
|
|
169
173
|
}
|
|
170
174
|
/**
|
|
171
175
|
* Create the initial runtime from a runtime factory and initial session target.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-runtime.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-runtime.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-session-runtime.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ export class AgentSessionRuntime {
|
|
|
42
42
|
beforeSessionInvalidate;
|
|
43
43
|
projectTrustContextFactory;
|
|
44
44
|
closed = false;
|
|
45
|
+
endedBySignal = false;
|
|
45
46
|
closing;
|
|
46
47
|
cleanupFailures = [];
|
|
47
48
|
candidates = new Set();
|
|
@@ -62,7 +63,7 @@ export class AgentSessionRuntime {
|
|
|
62
63
|
if (!this.retained.delete(session))
|
|
63
64
|
return;
|
|
64
65
|
const finalize = async () => {
|
|
65
|
-
await emitSessionShutdownEvent(session.extensionRunner,
|
|
66
|
+
await emitSessionShutdownEvent(session.extensionRunner, this.quitEvent());
|
|
66
67
|
};
|
|
67
68
|
if (hasCallingSessionWork(session)) {
|
|
68
69
|
this.retainRetirementCleanup(session.dispose().then(finalize, async (error) => {
|
|
@@ -180,7 +181,7 @@ export class AgentSessionRuntime {
|
|
|
180
181
|
this.candidates.add(candidate.session);
|
|
181
182
|
if (this.closed) {
|
|
182
183
|
try {
|
|
183
|
-
await candidate.session.
|
|
184
|
+
await candidate.session._close(this.quitEvent());
|
|
184
185
|
}
|
|
185
186
|
catch (error) {
|
|
186
187
|
this.cleanupFailures.push(error);
|
|
@@ -294,6 +295,11 @@ export class AgentSessionRuntime {
|
|
|
294
295
|
this.assertOpen();
|
|
295
296
|
return { cancelled: result?.cancel === true };
|
|
296
297
|
}
|
|
298
|
+
quitEvent() {
|
|
299
|
+
return this.endedBySignal
|
|
300
|
+
? { type: "session_shutdown", reason: "quit", fromSignal: true }
|
|
301
|
+
: { type: "session_shutdown", reason: "quit" };
|
|
302
|
+
}
|
|
297
303
|
disposeCurrentSession(event) {
|
|
298
304
|
const session = this.session;
|
|
299
305
|
if (event.reason !== "quit")
|
|
@@ -384,10 +390,7 @@ export class AgentSessionRuntime {
|
|
|
384
390
|
catch (cause) {
|
|
385
391
|
if (this.candidates.delete(result.session)) {
|
|
386
392
|
try {
|
|
387
|
-
await result.session._close({
|
|
388
|
-
type: "session_shutdown",
|
|
389
|
-
reason: this.closed ? "quit" : "new",
|
|
390
|
-
});
|
|
393
|
+
await result.session._close(this.closed ? this.quitEvent() : { type: "session_shutdown", reason: "new" });
|
|
391
394
|
}
|
|
392
395
|
catch (error) {
|
|
393
396
|
this.cleanupFailures.push(error);
|
|
@@ -571,17 +574,18 @@ export class AgentSessionRuntime {
|
|
|
571
574
|
return { cancelled: false };
|
|
572
575
|
});
|
|
573
576
|
}
|
|
574
|
-
dispose() {
|
|
577
|
+
dispose(options) {
|
|
575
578
|
if (this.closing)
|
|
576
579
|
return this.closing;
|
|
577
580
|
this.closed = true;
|
|
578
|
-
|
|
581
|
+
this.endedBySignal = options?.fromSignal === true;
|
|
582
|
+
const current = this.disposeCurrentSession(this.quitEvent());
|
|
579
583
|
void current.catch(() => { });
|
|
580
584
|
this.closing = (async () => {
|
|
581
585
|
await drainSessionWork(this);
|
|
582
586
|
for (const candidate of this.candidates) {
|
|
583
587
|
try {
|
|
584
|
-
await candidate.
|
|
588
|
+
await candidate._close(this.quitEvent());
|
|
585
589
|
}
|
|
586
590
|
catch (error) {
|
|
587
591
|
this.cleanupFailures.push(error);
|