@wirecat/cli-core 0.293.0 → 0.295.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/cli/bot/mcp.js +1 -1
- package/dist/cli/bot/mcp.js.map +1 -1
- package/dist/cli/bot/watch.js +1 -1
- package/dist/cli/bot/watch.js.map +1 -1
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +0 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/messenger/backfill-command.js +1 -1
- package/dist/cli/messenger/backfill-command.js.map +1 -1
- package/dist/cli/messenger/mcp-command.js +1 -1
- package/dist/cli/messenger/mcp-command.js.map +1 -1
- package/dist/cli/messenger/serve-command.js +1 -1
- package/dist/cli/messenger/serve-command.js.map +1 -1
- package/dist/cli/messenger/tasks-command.d.ts.map +1 -1
- package/dist/cli/messenger/tasks-command.js +66 -11
- package/dist/cli/messenger/tasks-command.js.map +1 -1
- package/dist/cli/messenger/watch-command.js +1 -1
- package/dist/cli/messenger/watch-command.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +4 -5
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/store-settings.d.ts +13 -0
- package/dist/cli/store-settings.d.ts.map +1 -1
- package/dist/cli/store-settings.js +65 -2
- package/dist/cli/store-settings.js.map +1 -1
- package/dist/documents/catalog.d.ts +3 -0
- package/dist/documents/catalog.d.ts.map +1 -0
- package/dist/documents/catalog.js +18 -0
- package/dist/documents/catalog.js.map +1 -0
- package/dist/documents/index.d.ts +10 -0
- package/dist/documents/index.d.ts.map +1 -0
- package/dist/documents/index.js +8 -0
- package/dist/documents/index.js.map +1 -0
- package/dist/documents/model.d.ts +117 -0
- package/dist/documents/model.d.ts.map +1 -0
- package/dist/documents/model.js +2 -0
- package/dist/documents/model.js.map +1 -0
- package/dist/documents/scope.d.ts +3 -0
- package/dist/documents/scope.d.ts.map +1 -0
- package/dist/documents/scope.js +15 -0
- package/dist/documents/scope.js.map +1 -0
- package/dist/documents.d.ts +1 -0
- package/dist/documents.d.ts.map +1 -1
- package/dist/documents.js +1 -0
- package/dist/documents.js.map +1 -1
- package/dist/domain/mentions.d.ts +2 -0
- package/dist/domain/mentions.d.ts.map +1 -1
- package/dist/domain/mentions.js +16 -13
- package/dist/domain/mentions.js.map +1 -1
- package/dist/domain/models.d.ts +2 -0
- package/dist/domain/models.d.ts.map +1 -1
- package/dist/domain/models.js.map +1 -1
- package/dist/domain/task-categories.d.ts +5 -0
- package/dist/domain/task-categories.d.ts.map +1 -1
- package/dist/domain/task-categories.js +473 -24
- package/dist/domain/task-categories.js.map +1 -1
- package/dist/entities/agenda.d.ts +9 -1
- package/dist/entities/agenda.d.ts.map +1 -1
- package/dist/entities/agenda.js +4 -1
- package/dist/entities/agenda.js.map +1 -1
- package/dist/entities/index.d.ts +15 -1
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/task.d.ts +19 -0
- package/dist/entities/task.d.ts.map +1 -1
- package/dist/entities/task.js +11 -0
- package/dist/entities/task.js.map +1 -1
- package/dist/errors/reasons.d.ts +1 -1
- package/dist/errors/reasons.d.ts.map +1 -1
- package/dist/errors/reasons.js +12 -1
- package/dist/errors/reasons.js.map +1 -1
- package/dist/files/index.d.ts +4 -4
- package/dist/files/index.d.ts.map +1 -1
- package/dist/files/index.js +2 -63
- package/dist/files/index.js.map +1 -1
- package/dist/files/native-lease-inspection.d.ts +3 -0
- package/dist/files/native-lease-inspection.d.ts.map +1 -0
- package/dist/files/native-lease-inspection.js +64 -0
- package/dist/files/native-lease-inspection.js.map +1 -0
- package/dist/files/native-lease-owner.d.ts +11 -0
- package/dist/files/native-lease-owner.d.ts.map +1 -0
- package/dist/files/native-lease-owner.js +54 -0
- package/dist/files/native-lease-owner.js.map +1 -0
- package/dist/files/native-lease-release.d.ts +5 -0
- package/dist/files/native-lease-release.d.ts.map +1 -0
- package/dist/files/native-lease-release.js +23 -0
- package/dist/files/native-lease-release.js.map +1 -0
- package/dist/files/native-writer-lease.d.ts +8 -0
- package/dist/files/native-writer-lease.d.ts.map +1 -0
- package/dist/files/native-writer-lease.js +74 -0
- package/dist/files/native-writer-lease.js.map +1 -0
- package/dist/files/ordinary-file.d.ts +7 -0
- package/dist/files/ordinary-file.d.ts.map +1 -0
- package/dist/files/ordinary-file.js +82 -0
- package/dist/files/ordinary-file.js.map +1 -0
- package/dist/files/writer-lease.d.ts +33 -0
- package/dist/files/writer-lease.d.ts.map +1 -0
- package/dist/files/writer-lease.js +2 -0
- package/dist/files/writer-lease.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/tasks.d.ts.map +1 -1
- package/dist/mcp/tools/tasks.js +37 -14
- package/dist/mcp/tools/tasks.js.map +1 -1
- package/dist/mcp/tools.d.ts +2 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +9 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/models/types.d.ts +1 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js +3 -1
- package/dist/models/types.js.map +1 -1
- package/dist/render/messages.d.ts +3 -1
- package/dist/render/messages.d.ts.map +1 -1
- package/dist/render/messages.js +18 -2
- package/dist/render/messages.js.map +1 -1
- package/dist/search/lucene/registry.d.ts.map +1 -1
- package/dist/search/lucene/registry.js +7 -2
- package/dist/search/lucene/registry.js.map +1 -1
- package/dist/search/task-similarity.d.ts +15 -2
- package/dist/search/task-similarity.d.ts.map +1 -1
- package/dist/search/task-similarity.js +29 -10
- package/dist/search/task-similarity.js.map +1 -1
- package/dist/services/agenda.d.ts +2 -2
- package/dist/services/agenda.d.ts.map +1 -1
- package/dist/services/agenda.js +4 -0
- package/dist/services/agenda.js.map +1 -1
- package/dist/services/documents/extraction.d.ts +13 -0
- package/dist/services/documents/extraction.d.ts.map +1 -0
- package/dist/services/documents/extraction.js +37 -0
- package/dist/services/documents/extraction.js.map +1 -0
- package/dist/services/documents/ingestion.d.ts +29 -0
- package/dist/services/documents/ingestion.d.ts.map +1 -0
- package/dist/services/documents/ingestion.js +125 -0
- package/dist/services/documents/ingestion.js.map +1 -0
- package/dist/services/documents/knowledge.d.ts +58 -0
- package/dist/services/documents/knowledge.d.ts.map +1 -0
- package/dist/services/documents/knowledge.js +143 -0
- package/dist/services/documents/knowledge.js.map +1 -0
- package/dist/services/documents/plan.d.ts +11 -0
- package/dist/services/documents/plan.d.ts.map +1 -0
- package/dist/services/documents/plan.js +200 -0
- package/dist/services/documents/plan.js.map +1 -0
- package/dist/services/documents/ports.d.ts +24 -0
- package/dist/services/documents/ports.d.ts.map +1 -0
- package/dist/services/documents/ports.js +2 -0
- package/dist/services/documents/ports.js.map +1 -0
- package/dist/services/documents/proposals.d.ts +38 -0
- package/dist/services/documents/proposals.d.ts.map +1 -0
- package/dist/services/documents/proposals.js +52 -0
- package/dist/services/documents/proposals.js.map +1 -0
- package/dist/services/documents/sync.d.ts +24 -0
- package/dist/services/documents/sync.d.ts.map +1 -0
- package/dist/services/documents/sync.js +217 -0
- package/dist/services/documents/sync.js.map +1 -0
- package/dist/services/tasks.d.ts +35 -11
- package/dist/services/tasks.d.ts.map +1 -1
- package/dist/services/tasks.js +82 -17
- package/dist/services/tasks.js.map +1 -1
- package/dist/store/index.d.ts +1 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/sqlite/lucene.d.ts.map +1 -1
- package/dist/store/sqlite/lucene.js +9 -3
- package/dist/store/sqlite/lucene.js.map +1 -1
- package/dist/store/sqlite/manifest.d.ts.map +1 -1
- package/dist/store/sqlite/manifest.js +1 -0
- package/dist/store/sqlite/manifest.js.map +1 -1
- package/dist/store/sqlite/mention-links.d.ts +13 -0
- package/dist/store/sqlite/mention-links.d.ts.map +1 -0
- package/dist/store/sqlite/mention-links.js +32 -0
- package/dist/store/sqlite/mention-links.js.map +1 -0
- package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
- package/dist/store/sqlite/migrations.generated.js +13 -0
- package/dist/store/sqlite/migrations.generated.js.map +1 -1
- package/dist/store/sqlite/schema.d.ts +112 -0
- package/dist/store/sqlite/schema.d.ts.map +1 -1
- package/dist/store/sqlite/schema.js +8 -0
- package/dist/store/sqlite/schema.js.map +1 -1
- package/dist/store/sqlite/task-candidates.d.ts +2 -0
- package/dist/store/sqlite/task-candidates.d.ts.map +1 -1
- package/dist/store/sqlite/task-candidates.js +76 -32
- package/dist/store/sqlite/task-candidates.js.map +1 -1
- package/dist/store/sqlite/task-close-store.d.ts +24 -0
- package/dist/store/sqlite/task-close-store.d.ts.map +1 -0
- package/dist/store/sqlite/task-close-store.js +57 -0
- package/dist/store/sqlite/task-close-store.js.map +1 -0
- package/dist/store/sqlite/task-close.d.ts +35 -0
- package/dist/store/sqlite/task-close.d.ts.map +1 -0
- package/dist/store/sqlite/task-close.js +68 -0
- package/dist/store/sqlite/task-close.js.map +1 -0
- package/dist/store/sqlite/task-pairs.d.ts +14 -4
- package/dist/store/sqlite/task-pairs.d.ts.map +1 -1
- package/dist/store/sqlite/task-pairs.js +31 -5
- package/dist/store/sqlite/task-pairs.js.map +1 -1
- package/dist/store/sqlite/task-relations.d.ts.map +1 -1
- package/dist/store/sqlite/task-relations.js +4 -1
- package/dist/store/sqlite/task-relations.js.map +1 -1
- package/dist/store/sqlite/tasks.d.ts +4 -1
- package/dist/store/sqlite/tasks.d.ts.map +1 -1
- package/dist/store/sqlite/tasks.js +16 -4
- package/dist/store/sqlite/tasks.js.map +1 -1
- package/dist/store/sqlite/work-tasks.d.ts +6 -1
- package/dist/store/sqlite/work-tasks.d.ts.map +1 -1
- package/dist/store/sqlite/work-tasks.js +8 -0
- package/dist/store/sqlite/work-tasks.js.map +1 -1
- package/dist/store/store.d.ts +1 -0
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +1 -0
- package/dist/store/store.js.map +1 -1
- package/package.json +3 -3
- package/parity.json +34 -0
- package/skills/follow-ups/SKILL.md +2 -1
- package/dist/mcp/personal.d.ts +0 -8
- package/dist/mcp/personal.d.ts.map +0 -1
- package/dist/mcp/personal.js +0 -21
- package/dist/mcp/personal.js.map +0 -1
package/dist/entities/agenda.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as v from "valibot";
|
|
2
2
|
import { TASK_TYPES } from "../domain/knowledge.js";
|
|
3
3
|
import { id, reference, text, time } from "./fields.js";
|
|
4
|
+
import { closeSuggestion } from "./task.js";
|
|
4
5
|
const agendaChat = v.strictObject({
|
|
5
6
|
chat: reference,
|
|
6
7
|
title: v.nullable(text),
|
|
@@ -33,8 +34,10 @@ export const agenda = v.strictObject({
|
|
|
33
34
|
/** Who works on it now; only the asker's own claims are listed unless the query names claimed:. */
|
|
34
35
|
claimed_by: v.nullable(text),
|
|
35
36
|
claimed_until: v.nullable(time),
|
|
37
|
+
/** An agent's close waiting on the owner: `tasks close` confirms it, `tasks reject` refuses it. */
|
|
38
|
+
close_suggestion: v.nullable(closeSuggestion),
|
|
36
39
|
created_at: time,
|
|
37
|
-
reasons: v.array(v.picklist(["overdue", "due", "check", "unplanned"])),
|
|
40
|
+
reasons: v.array(v.picklist(["overdue", "due", "check", "unplanned", "close-suggested"])),
|
|
38
41
|
})),
|
|
39
42
|
/** Someone else wrote last, and the owner has not answered. */
|
|
40
43
|
owed: v.array(agendaChat),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agenda.js","sourceRoot":"","sources":["../../src/entities/agenda.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"agenda.js","sourceRoot":"","sources":["../../src/entities/agenda.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC;IAChC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACpE,yEAAyE;IACzE,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;IACnC,eAAe,EAAE,IAAI;IACrB,8FAA8F;IAC9F,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,+CAA+C;IAC/C,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;CACxB,CAAC,CAAA;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC;IACnC,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC3B,gGAAgG;IAChG,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,YAAY,CAAC;QACb,EAAE;QACF,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1B,wCAAwC;QACxC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxB,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,mGAAmG;QACnG,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC5B,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,mGAAmG;QACnG,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC7C,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;KAC1F,CAAC,CACH;IACD,+DAA+D;IAC/D,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IACzB,iDAAiD;IACjD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAC5B,8FAA8F;IAC9F,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;CAC9B,CAAC,CAAA"}
|
package/dist/entities/index.d.ts
CHANGED
|
@@ -1862,6 +1862,13 @@ export declare const ENTITIES: {
|
|
|
1862
1862
|
readonly category: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
1863
1863
|
readonly claimed_by: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
1864
1864
|
readonly claimed_until: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>, undefined>, undefined>;
|
|
1865
|
+
readonly close_suggestion: v.OptionalSchema<v.NullableSchema<v.StrictObjectSchema<{
|
|
1866
|
+
readonly as: v.PicklistSchema<["done", "dismissed"], undefined>;
|
|
1867
|
+
readonly by: v.StringSchema<undefined>;
|
|
1868
|
+
readonly certainty: v.NumberSchema<undefined>;
|
|
1869
|
+
readonly reason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1870
|
+
readonly at: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>;
|
|
1871
|
+
}, undefined>, undefined>, undefined>;
|
|
1865
1872
|
readonly created_at: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>;
|
|
1866
1873
|
readonly updated_at: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>, undefined>;
|
|
1867
1874
|
}, undefined>;
|
|
@@ -2441,8 +2448,15 @@ export declare const ENTITIES: {
|
|
|
2441
2448
|
readonly next_check_at: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>, undefined>;
|
|
2442
2449
|
readonly claimed_by: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
2443
2450
|
readonly claimed_until: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>, undefined>;
|
|
2451
|
+
readonly close_suggestion: v.NullableSchema<v.StrictObjectSchema<{
|
|
2452
|
+
readonly as: v.PicklistSchema<["done", "dismissed"], undefined>;
|
|
2453
|
+
readonly by: v.StringSchema<undefined>;
|
|
2454
|
+
readonly certainty: v.NumberSchema<undefined>;
|
|
2455
|
+
readonly reason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
2456
|
+
readonly at: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>;
|
|
2457
|
+
}, undefined>, undefined>;
|
|
2444
2458
|
readonly created_at: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>;
|
|
2445
|
-
readonly reasons: v.ArraySchema<v.PicklistSchema<["overdue", "due", "check", "unplanned"], undefined>, undefined>;
|
|
2459
|
+
readonly reasons: v.ArraySchema<v.PicklistSchema<["overdue", "due", "check", "unplanned", "close-suggested"], undefined>, undefined>;
|
|
2446
2460
|
}, undefined>, undefined>;
|
|
2447
2461
|
readonly owed: v.ArraySchema<v.StrictObjectSchema<{
|
|
2448
2462
|
readonly chat: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFX,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,QAAQ,CAAA;AAE9C,2GAA2G;AAC3G,eAAO,MAAM,iBAAiB,QAAO,MAAM,CAAC,UAAU,EAAE,OAAO,CAM7B,CAAA;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA"}
|
package/dist/entities/task.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import * as v from "valibot";
|
|
2
|
+
export declare const closeSuggestion: v.StrictObjectSchema<{
|
|
3
|
+
readonly as: v.PicklistSchema<["done", "dismissed"], undefined>;
|
|
4
|
+
/** The agent's name. */
|
|
5
|
+
readonly by: v.StringSchema<undefined>;
|
|
6
|
+
/** 0–1, as the agent rated it. */
|
|
7
|
+
readonly certainty: v.NumberSchema<undefined>;
|
|
8
|
+
readonly reason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
9
|
+
readonly at: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>;
|
|
10
|
+
}, undefined>;
|
|
2
11
|
export declare const task: v.StrictObjectSchema<{
|
|
3
12
|
readonly ref: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>;
|
|
4
13
|
readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
@@ -25,6 +34,16 @@ export declare const task: v.StrictObjectSchema<{
|
|
|
25
34
|
/** Who works on it now, and until when; null when nobody does. */
|
|
26
35
|
readonly claimed_by: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
27
36
|
readonly claimed_until: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>, undefined>, undefined>;
|
|
37
|
+
/** The close an agent would make, waiting on the owner: `tasks close` confirms it, `tasks reject` refuses it. */
|
|
38
|
+
readonly close_suggestion: v.OptionalSchema<v.NullableSchema<v.StrictObjectSchema<{
|
|
39
|
+
readonly as: v.PicklistSchema<["done", "dismissed"], undefined>;
|
|
40
|
+
/** The agent's name. */
|
|
41
|
+
readonly by: v.StringSchema<undefined>;
|
|
42
|
+
/** 0–1, as the agent rated it. */
|
|
43
|
+
readonly certainty: v.NumberSchema<undefined>;
|
|
44
|
+
readonly reason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
45
|
+
readonly at: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>;
|
|
46
|
+
}, undefined>, undefined>, undefined>;
|
|
28
47
|
readonly created_at: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>;
|
|
29
48
|
readonly updated_at: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time with a zone">]>, undefined>;
|
|
30
49
|
}, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/entities/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAK5B,eAAO,MAAM,IAAI;;;IAGf,yHAAyH;;;;;;;;;IASzH,qDAAqD;;IAErD,gCAAgC;;;;;;;IAOhC,4DAA4D;;IAE5D,kEAAkE
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/entities/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAK5B,eAAO,MAAM,eAAe;;IAE1B,wBAAwB;;IAExB,kCAAkC;;;;aAIlC,CAAA;AAEF,eAAO,MAAM,IAAI;;;IAGf,yHAAyH;;;;;;;;;IASzH,qDAAqD;;IAErD,gCAAgC;;;;;;;IAOhC,4DAA4D;;IAE5D,kEAAkE;;;IAGlE,iHAAiH;;;QAlCjH,wBAAwB;;QAExB,kCAAkC;;;;;;;aAoClC,CAAA"}
|
package/dist/entities/task.js
CHANGED
|
@@ -2,6 +2,15 @@ import * as v from "valibot";
|
|
|
2
2
|
import { TASK_TYPES } from "../domain/knowledge.js";
|
|
3
3
|
import { TASK_ORIGINS, TASK_STATES } from "../tasks/index.js";
|
|
4
4
|
import { id, reference, text, time } from "./fields.js";
|
|
5
|
+
export const closeSuggestion = v.strictObject({
|
|
6
|
+
as: v.picklist(["done", "dismissed"]),
|
|
7
|
+
/** The agent's name. */
|
|
8
|
+
by: text,
|
|
9
|
+
/** 0–1, as the agent rated it. */
|
|
10
|
+
certainty: v.number(),
|
|
11
|
+
reason: v.nullable(text),
|
|
12
|
+
at: time,
|
|
13
|
+
});
|
|
5
14
|
export const task = v.strictObject({
|
|
6
15
|
ref: reference,
|
|
7
16
|
id,
|
|
@@ -28,6 +37,8 @@ export const task = v.strictObject({
|
|
|
28
37
|
/** Who works on it now, and until when; null when nobody does. */
|
|
29
38
|
claimed_by: v.optional(v.nullable(text)),
|
|
30
39
|
claimed_until: v.optional(v.nullable(time)),
|
|
40
|
+
/** The close an agent would make, waiting on the owner: `tasks close` confirms it, `tasks reject` refuses it. */
|
|
41
|
+
close_suggestion: v.optional(v.nullable(closeSuggestion)),
|
|
31
42
|
created_at: time,
|
|
32
43
|
updated_at: v.optional(time),
|
|
33
44
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/entities/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC;IACjC,GAAG,EAAE,SAAS;IACd,EAAE;IACF,yHAAyH;IACzH,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACzB,qDAAqD;IACrD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,gCAAgC;IAChC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,4DAA4D;IAC5D,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,kEAAkE;IAClE,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3C,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;CAC7B,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/entities/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC;IAC5C,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,wBAAwB;IACxB,EAAE,EAAE,IAAI;IACR,kCAAkC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACxB,EAAE,EAAE,IAAI;CACT,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC;IACjC,GAAG,EAAE,SAAS;IACd,EAAE;IACF,yHAAyH;IACzH,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACzB,qDAAqD;IACrD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,gCAAgC;IAChC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,4DAA4D;IAC5D,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,kEAAkE;IAClE,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3C,iHAAiH;IACjH,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACzD,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;CAC7B,CAAC,CAAA"}
|
package/dist/errors/reasons.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare const REASONS: ErrorReason[];
|
|
|
6
6
|
* Detail keys an error from this package may carry, until each is registered on its own reason. Not `cause`:
|
|
7
7
|
* that can hold a provider's or SQLite's raw text.
|
|
8
8
|
*/
|
|
9
|
-
export declare const DETAILS: readonly ["allowed", "alternative", "arguments", "at", "available", "batch", "budget", "built", "candidates", "chat", "chat_id", "cli", "complete", "emitted_bytes", "exact", "forum", "guide", "hint", "id", "index", "kind", "limit", "limit_source", "max_bytes", "model", "name", "operation_id", "operation_ids", "partial_output", "path", "permission", "person_ids", "previous_chat_id", "profiles", "provider_error", "provider", "recovery", "reference", "remembered", "retry_at", "runtime", "saved", "scheduled_for", "script", "sent", "sent_count", "settlement_failed", "span", "sqlite", "stage", "standing", "state", "stderr", "term", "total", "upgraded", "wanted"];
|
|
9
|
+
export declare const DETAILS: readonly ["allowed", "alternative", "arguments", "at", "available", "batch", "budget", "built", "candidates", "chat", "chat_id", "cli", "complete", "emitted_bytes", "exact", "forum", "guide", "hint", "id", "index", "kind", "limit", "limit_source", "max_bytes", "model", "name", "operation_id", "operation_ids", "text_limit", "store_refused_in", "partial_output", "path", "permission", "person_ids", "previous_chat_id", "profiles", "provider_error", "provider", "recovery", "reference", "remembered", "retry_at", "runtime", "saved", "scheduled_for", "script", "sent", "sent_count", "settlement_failed", "span", "sqlite", "stage", "standing", "state", "stderr", "term", "total", "upgraded", "wanted"];
|
|
10
10
|
/** What a CLI adds to the shared registry: its own reasons, and the detail keys its adapters raise. */
|
|
11
11
|
export interface AppErrors {
|
|
12
12
|
reasons?: readonly ErrorReason[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasons.d.ts","sourceRoot":"","sources":["../../src/errors/reasons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"reasons.d.ts","sourceRoot":"","sources":["../../src/errors/reasons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAyE9D,yFAAyF;AACzF,eAAO,MAAM,OAAO,EAAE,WAAW,EAG/B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,YAClB,SAAS,EACT,aAAa,EACb,WAAW,EACX,IAAI,EACJ,WAAW,EACX,OAAO,EACP,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,eAAe,EACf,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,IAAI,EACJ,OAAO,EACP,MAAM,EACN,OAAO,EACP,cAAc,EACd,WAAW,EACX,OAAO,EACP,MAAM,EACN,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,SAAS,EACT,OAAO,EACP,eAAe,EACf,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,OAAO,EACP,UAAU,EACV,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,CACA,CAAA;AAEV,uGAAuG;AACvG,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAChC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC5B;AAKD,sHAAsH;AACtH,eAAO,MAAM,cAAc,YAAa,SAAS,KAAG,cAYnD,CAAA"}
|
package/dist/errors/reasons.js
CHANGED
|
@@ -15,6 +15,13 @@ const QUERY = [
|
|
|
15
15
|
["query.topic-scope", "a topic needs its chat in the query"],
|
|
16
16
|
].map(([reason, message]) => validation(reason, message));
|
|
17
17
|
const OTHERS = [
|
|
18
|
+
validation("document.changed", "the document changed while it was read; nothing was saved"),
|
|
19
|
+
["document.not-imported", "not_found", "the document is not imported in this source account"],
|
|
20
|
+
["extraction.invalid-proposals", "invalid_response", "the model's memory proposals could not be used"],
|
|
21
|
+
validation("extraction.text-too-long", "the text is too long for memory extraction"),
|
|
22
|
+
["profile.wrong-account", "authentication_error", "the signed-in source account does not match this profile"],
|
|
23
|
+
validation("store.refused", "the local store refused the document text"),
|
|
24
|
+
validation("catalog.scope-limit", "the selected catalog exceeds its entry limit"),
|
|
18
25
|
validation("evidence.row-too-large", "one evidence row is over its size limit"),
|
|
19
26
|
validation("index.not-ready", "the search index is still being built"),
|
|
20
27
|
validation("input.closed", "the input closed before the answer"),
|
|
@@ -46,7 +53,9 @@ const OTHERS = [
|
|
|
46
53
|
validation("task.claimed", "someone else holds the task"),
|
|
47
54
|
validation("task.closed", "the task is already closed"),
|
|
48
55
|
validation("task.dependency-cycle", "the task would depend on itself"),
|
|
49
|
-
validation("task.duplicate-candidates", "open
|
|
56
|
+
validation("task.duplicate-candidates", "open tasks may be the same job: attach to one, or add it as new"),
|
|
57
|
+
validation("task.certainty-required", "an agent closes a task with its certainty, 0 to 1"),
|
|
58
|
+
validation("task.no-close-suggestion", "the task has no agent's close waiting on the owner"),
|
|
50
59
|
validation("task.merged", "the task was merged into another; use that one"),
|
|
51
60
|
validation("task.not-merged", "the task was not merged into another"),
|
|
52
61
|
["upgrade.install-failed", "provider_error", "the installer failed; the old version stays"],
|
|
@@ -94,6 +103,8 @@ export const DETAILS = [
|
|
|
94
103
|
"name",
|
|
95
104
|
"operation_id",
|
|
96
105
|
"operation_ids",
|
|
106
|
+
"text_limit",
|
|
107
|
+
"store_refused_in",
|
|
97
108
|
"partial_output",
|
|
98
109
|
"path",
|
|
99
110
|
"permission",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasons.js","sourceRoot":"","sources":["../../src/errors/reasons.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAI3D,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,OAAe,EAAS,EAAE,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAA;AAEpG,oGAAoG;AACpG,MAAM,KAAK,GAAY;IACrB,CAAC,eAAe,EAAE,2CAA2C,CAAC;IAC9D,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;IAClE,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;IAC7D,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;IACpD,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;IACvD,CAAC,oBAAoB,EAAE,oCAAoC,CAAC;IAC5D,CAAC,yBAAyB,EAAE,uCAAuC,CAAC;IACpE,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;IACxD,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;IAC5D,CAAC,mBAAmB,EAAE,qCAAqC,CAAC;CAC7D,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAgB,EAAE,OAAiB,CAAC,CAAC,CAAA;AAE7E,MAAM,MAAM,GAAY;IACtB,UAAU,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;IAC/E,UAAU,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;IACtE,UAAU,CAAC,cAAc,EAAE,oCAAoC,CAAC;IAChE,UAAU,CAAC,gBAAgB,EAAE,oDAAoD,CAAC;IAClF,UAAU,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;IACjE,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,yCAAyC,CAAC;IAC3F,UAAU,CAAC,0BAA0B,EAAE,6BAA6B,CAAC;IACrE,UAAU,CAAC,uBAAuB,EAAE,0BAA0B,CAAC;IAC/D,CAAC,sBAAsB,EAAE,WAAW,EAAE,6CAA6C,CAAC;IACpF,UAAU,CAAC,cAAc,EAAE,uBAAuB,CAAC;IACnD,UAAU,CAAC,sBAAsB,EAAE,kDAAkD,CAAC;IACtF,UAAU,CAAC,mBAAmB,EAAE,yDAAyD,CAAC;IAC1F,UAAU,CAAC,sBAAsB,EAAE,sCAAsC,CAAC;IAC1E,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC;IACpD,UAAU,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;IAC1E,UAAU,CAAC,sBAAsB,EAAE,iDAAiD,CAAC;IACrF,UAAU,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;IACzD,UAAU,CAAC,mBAAmB,EAAE,wCAAwC,CAAC;IACzE,UAAU,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;IAC7D,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,0DAA0D,CAAC;IAC1G,UAAU,CAAC,iBAAiB,EAAE,0CAA0C,CAAC;IACzE,UAAU,CAAC,eAAe,EAAE,sCAAsC,CAAC;IACnE,UAAU,CAAC,iBAAiB,EAAE,qDAAqD,CAAC;IACpF,UAAU,CAAC,wBAAwB,EAAE,mCAAmC,CAAC;IACzE,UAAU,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;IAC3E,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,kCAAkC,CAAC;IAC/E,UAAU,CAAC,aAAa,EAAE,sBAAsB,CAAC;IACjD,UAAU,CAAC,uBAAuB,EAAE,+CAA+C,CAAC;IACpF,UAAU,CAAC,cAAc,EAAE,6BAA6B,CAAC;IACzD,UAAU,CAAC,aAAa,EAAE,4BAA4B,CAAC;IACvD,UAAU,CAAC,uBAAuB,EAAE,iCAAiC,CAAC;IACtE,UAAU,CAAC,2BAA2B,EAAE,
|
|
1
|
+
{"version":3,"file":"reasons.js","sourceRoot":"","sources":["../../src/errors/reasons.ts"],"names":[],"mappings":"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"}
|
package/dist/files/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export
|
|
1
|
+
export type { NativeWriterLeaseLayout } from "./native-writer-lease.js";
|
|
2
|
+
export { nativeWriterLeaseStore } from "./native-writer-lease.js";
|
|
3
|
+
export { openOrdinaryFile, syncDirectory } from "./ordinary-file.js";
|
|
4
|
+
export type { WriterLease, WriterLeaseAcquisition, WriterLeaseInfo, WriterLeaseOptions, WriterLeaseStore, } from "./writer-lease.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/files/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/files/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACpE,YAAY,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA"}
|
package/dist/files/index.js
CHANGED
|
@@ -1,64 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { CliError } from "@wirecat/cli-base";
|
|
4
|
-
// Node 22's Windows path stat uses a 64-bit volume serial; handle stat uses its low DWORD.
|
|
5
|
-
const deviceOf = (dev) => (process.platform === "win32" ? BigInt.asUintN(32, dev) : dev);
|
|
6
|
-
/** Check the opened object before reading: Windows has no O_NOFOLLOW support. */
|
|
7
|
-
export const openOrdinaryFile = async (path) => {
|
|
8
|
-
const before = await lstat(path, { bigint: true });
|
|
9
|
-
if (before.isSymbolicLink())
|
|
10
|
-
throw new CliError("validation_error", "archive path must be an ordinary file without a symlink");
|
|
11
|
-
if (!before.isFile())
|
|
12
|
-
throw new CliError("validation_error", "archive path must be an ordinary file");
|
|
13
|
-
const flags = process.platform === "win32"
|
|
14
|
-
? constants.O_RDONLY
|
|
15
|
-
: constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0) | (constants.O_NONBLOCK ?? 0);
|
|
16
|
-
const file = await open(path, flags);
|
|
17
|
-
try {
|
|
18
|
-
const opened = await file.stat({ bigint: true });
|
|
19
|
-
const after = await lstat(path, { bigint: true });
|
|
20
|
-
if (!opened.isFile() || !after.isFile() || before.ino !== opened.ino || before.ino !== after.ino)
|
|
21
|
-
throw new CliError("validation_error", "archive file changed while opening");
|
|
22
|
-
if (process.platform === "win32" && before.dev === 0n && after.dev === 0n) {
|
|
23
|
-
// Older Windows path stats omit the device; compare two handles before any content read.
|
|
24
|
-
const witness = await open(path, flags);
|
|
25
|
-
try {
|
|
26
|
-
const identified = await witness.stat({ bigint: true });
|
|
27
|
-
const final = await lstat(path, { bigint: true });
|
|
28
|
-
if (opened.dev === 0n ||
|
|
29
|
-
!identified.isFile() ||
|
|
30
|
-
!final.isFile() ||
|
|
31
|
-
deviceOf(identified.dev) !== deviceOf(opened.dev) ||
|
|
32
|
-
identified.ino !== opened.ino ||
|
|
33
|
-
final.ino !== before.ino ||
|
|
34
|
-
(final.dev !== 0n && deviceOf(final.dev) !== deviceOf(opened.dev)))
|
|
35
|
-
throw new CliError("validation_error", "archive file changed while opening");
|
|
36
|
-
}
|
|
37
|
-
finally {
|
|
38
|
-
await witness.close();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
else if (deviceOf(before.dev) !== deviceOf(opened.dev) || deviceOf(before.dev) !== deviceOf(after.dev)) {
|
|
42
|
-
throw new CliError("validation_error", "archive file changed while opening");
|
|
43
|
-
}
|
|
44
|
-
return file;
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
await file.close();
|
|
48
|
-
throw error;
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
export const syncDirectory = async (path) => {
|
|
52
|
-
if (process.platform === "win32")
|
|
53
|
-
return;
|
|
54
|
-
const directory = await open(path, constants.O_RDONLY | (constants.O_DIRECTORY ?? 0) | (constants.O_NOFOLLOW ?? 0));
|
|
55
|
-
try {
|
|
56
|
-
if (!(await directory.stat()).isDirectory())
|
|
57
|
-
throw new CliError("validation_error", "archive publication directory must be ordinary");
|
|
58
|
-
await directory.sync();
|
|
59
|
-
}
|
|
60
|
-
finally {
|
|
61
|
-
await directory.close();
|
|
62
|
-
}
|
|
63
|
-
};
|
|
1
|
+
export { nativeWriterLeaseStore } from "./native-writer-lease.js";
|
|
2
|
+
export { openOrdinaryFile, syncDirectory } from "./ordinary-file.js";
|
|
64
3
|
//# sourceMappingURL=index.js.map
|
package/dist/files/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/files/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/files/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-lease-inspection.d.ts","sourceRoot":"","sources":["../../src/files/native-lease-inspection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE1E,eAAO,MAAM,eAAe,oBAAqB,MAAM,KAAG,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,SAAS,CAoDrG,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { lstat, readdir, realpath, unlink } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { CliError } from "@wirecat/cli-base";
|
|
4
|
+
import { leaseOwnerStatus, missingLeaseFile, readLeaseOwner } from "./native-lease-owner.js";
|
|
5
|
+
export const leaseInspection = (markerDirectory) => {
|
|
6
|
+
const inspect = async (destination, options = {}) => {
|
|
7
|
+
options.signal?.throwIfAborted();
|
|
8
|
+
const root = await realpath(destination);
|
|
9
|
+
options.signal?.throwIfAborted();
|
|
10
|
+
const folder = join(root, markerDirectory);
|
|
11
|
+
let names;
|
|
12
|
+
try {
|
|
13
|
+
if ((await lstat(folder)).isSymbolicLink())
|
|
14
|
+
throw new Error("symlink");
|
|
15
|
+
names = await readdir(folder);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
options.signal?.throwIfAborted();
|
|
19
|
+
if (missingLeaseFile(error))
|
|
20
|
+
return [];
|
|
21
|
+
throw new CliError("configuration_error", "archive lock directory could not be read");
|
|
22
|
+
}
|
|
23
|
+
options.signal?.throwIfAborted();
|
|
24
|
+
const result = [];
|
|
25
|
+
for (const name of names.sort()) {
|
|
26
|
+
options.signal?.throwIfAborted();
|
|
27
|
+
const owner = await readLeaseOwner(join(folder, name), name, options.signal);
|
|
28
|
+
result.push({
|
|
29
|
+
name,
|
|
30
|
+
status: owner ? leaseOwnerStatus(owner) : "unrecognized",
|
|
31
|
+
pid: owner?.pid ?? null,
|
|
32
|
+
host: owner?.host ?? null,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
const recover = async (destination, options = {}) => {
|
|
38
|
+
options.signal?.throwIfAborted();
|
|
39
|
+
const root = await realpath(destination);
|
|
40
|
+
const locks = await inspect(root, options);
|
|
41
|
+
const removed = [];
|
|
42
|
+
if (options.apply)
|
|
43
|
+
for (const lock of locks) {
|
|
44
|
+
options.signal?.throwIfAborted();
|
|
45
|
+
if (lock.status !== "stale")
|
|
46
|
+
continue;
|
|
47
|
+
const path = join(root, markerDirectory, lock.name);
|
|
48
|
+
const owner = await readLeaseOwner(path, lock.name, options.signal);
|
|
49
|
+
if (!owner || leaseOwnerStatus(owner) !== "stale")
|
|
50
|
+
continue;
|
|
51
|
+
try {
|
|
52
|
+
await unlink(path);
|
|
53
|
+
removed.push(lock.name);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (!missingLeaseFile(error))
|
|
57
|
+
throw new CliError("configuration_error", "stale archive lock could not be removed");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return { locks, removed };
|
|
61
|
+
};
|
|
62
|
+
return { inspect, recover };
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=native-lease-inspection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-lease-inspection.js","sourceRoot":"","sources":["../../src/files/native-lease-inspection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WriterLeaseInfo } from "./writer-lease.js";
|
|
2
|
+
export interface NativeLeaseOwner {
|
|
3
|
+
version: 1;
|
|
4
|
+
pid: number;
|
|
5
|
+
host: string;
|
|
6
|
+
nonce: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const missingLeaseFile: (error: unknown) => boolean;
|
|
9
|
+
export declare const readLeaseOwner: (path: string, name: string, signal?: AbortSignal) => Promise<NativeLeaseOwner | null>;
|
|
10
|
+
export declare const leaseOwnerStatus: (owner: NativeLeaseOwner) => WriterLeaseInfo["status"];
|
|
11
|
+
//# sourceMappingURL=native-lease-owner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-lease-owner.d.ts","sourceRoot":"","sources":["../../src/files/native-lease-owner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,gBAAgB,UAAW,OAAO,KAAG,OACyC,CAAA;AAE3F,eAAO,MAAM,cAAc,SACnB,MAAM,QACN,MAAM,WACH,WAAW,KACnB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAmCjC,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,gBAAgB,KAAG,eAAe,CAAC,QAAQ,CAQlF,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { hostname } from "node:os";
|
|
2
|
+
import { openOrdinaryFile } from "./ordinary-file.js";
|
|
3
|
+
export const missingLeaseFile = (error) => typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
|
|
4
|
+
export const readLeaseOwner = async (path, name, signal) => {
|
|
5
|
+
signal?.throwIfAborted();
|
|
6
|
+
try {
|
|
7
|
+
const file = await openOrdinaryFile(path);
|
|
8
|
+
try {
|
|
9
|
+
if ((await file.stat()).size > 4096)
|
|
10
|
+
return null;
|
|
11
|
+
const buffer = Buffer.alloc(4097);
|
|
12
|
+
let size = 0;
|
|
13
|
+
while (size < buffer.length) {
|
|
14
|
+
signal?.throwIfAborted();
|
|
15
|
+
const { bytesRead } = await file.read(buffer, size, buffer.length - size, size);
|
|
16
|
+
if (bytesRead === 0)
|
|
17
|
+
break;
|
|
18
|
+
size += bytesRead;
|
|
19
|
+
}
|
|
20
|
+
signal?.throwIfAborted();
|
|
21
|
+
if (size > 4096)
|
|
22
|
+
return null;
|
|
23
|
+
const owner = JSON.parse(buffer.subarray(0, size).toString("utf8"));
|
|
24
|
+
if (owner?.version !== 1 ||
|
|
25
|
+
!Number.isSafeInteger(owner.pid) ||
|
|
26
|
+
owner.pid <= 0 ||
|
|
27
|
+
typeof owner.host !== "string" ||
|
|
28
|
+
!owner.host.trim() ||
|
|
29
|
+
!/^[a-f0-9-]{36}$/.test(owner.nonce) ||
|
|
30
|
+
name !== `${owner.pid}-${owner.nonce}.json`)
|
|
31
|
+
return null;
|
|
32
|
+
return owner;
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
await file.close();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
signal?.throwIfAborted();
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
export const leaseOwnerStatus = (owner) => {
|
|
44
|
+
if (owner.host !== hostname())
|
|
45
|
+
return "foreign";
|
|
46
|
+
try {
|
|
47
|
+
process.kill(owner.pid, 0);
|
|
48
|
+
return "active";
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === "ESRCH" ? "stale" : "active";
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=native-lease-owner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-lease-owner.js","sourceRoot":"","sources":["../../src/files/native-lease-owner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type NativeLeaseOwner } from "./native-lease-owner.js";
|
|
2
|
+
import type { WriterLease } from "./writer-lease.js";
|
|
3
|
+
export declare const ownedNativeLease: (path: string, name: string, owner: NativeLeaseOwner, folder: string, identity: BigIntStats) => WriterLease;
|
|
4
|
+
import type { BigIntStats } from "node:fs";
|
|
5
|
+
//# sourceMappingURL=native-lease-release.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-lease-release.d.ts","sourceRoot":"","sources":["../../src/files/native-lease-release.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,yBAAyB,CAAA;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,eAAO,MAAM,gBAAgB,SACrB,MAAM,QACN,MAAM,SACL,gBAAgB,UACf,MAAM,YACJ,WAAW,KACpB,WAkBF,CAAA;AAED,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { rmdir, unlink } from "node:fs/promises";
|
|
2
|
+
import { CliError } from "@wirecat/cli-base";
|
|
3
|
+
import { readLeaseOwner } from "./native-lease-owner.js";
|
|
4
|
+
import { sameOrdinaryFile } from "./ordinary-file.js";
|
|
5
|
+
export const ownedNativeLease = (path, name, owner, folder, identity) => {
|
|
6
|
+
let releasing;
|
|
7
|
+
const release = async () => {
|
|
8
|
+
if (!(await sameOrdinaryFile(path, identity)))
|
|
9
|
+
throw new CliError("configuration_error", "owned archive lock changed before release");
|
|
10
|
+
const current = await readLeaseOwner(path, name);
|
|
11
|
+
if (!current || current.host !== owner.host || current.pid !== owner.pid || current.nonce !== owner.nonce)
|
|
12
|
+
throw new CliError("configuration_error", "owned archive lock changed before release");
|
|
13
|
+
await unlink(path);
|
|
14
|
+
await rmdir(folder).catch(() => undefined);
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
release: () => (releasing ??= release().catch((error) => {
|
|
18
|
+
releasing = undefined;
|
|
19
|
+
throw error;
|
|
20
|
+
})),
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=native-lease-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-lease-release.js","sourceRoot":"","sources":["../../src/files/native-lease-release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAyB,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,IAAY,EACZ,KAAuB,EACvB,MAAc,EACd,QAAqB,EACR,EAAE;IACf,IAAI,SAAoC,CAAA;IACxC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3C,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,2CAA2C,CAAC,CAAA;QACxF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;YACvG,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,2CAA2C,CAAC,CAAA;QACxF,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;QAClB,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAC5C,CAAC,CAAA;IACD,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CACZ,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,SAAS,GAAG,SAAS,CAAA;YACrB,MAAM,KAAK,CAAA;QACb,CAAC,CAAC,CAAC;KACN,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WriterLeaseStore } from "./writer-lease.js";
|
|
2
|
+
export interface NativeWriterLeaseLayout {
|
|
3
|
+
markerDirectory: string;
|
|
4
|
+
legacyMarker?: string;
|
|
5
|
+
}
|
|
6
|
+
/** Native PID/nonce markers; cooperating writers must use the same root and marker layout. */
|
|
7
|
+
export declare const nativeWriterLeaseStore: (layout: NativeWriterLeaseLayout) => WriterLeaseStore;
|
|
8
|
+
//# sourceMappingURL=native-writer-lease.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-writer-lease.d.ts","sourceRoot":"","sources":["../../src/files/native-writer-lease.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAKD,8FAA8F;AAC9F,eAAO,MAAM,sBAAsB,WAAY,uBAAuB,KAAG,gBA0DxE,CAAA"}
|