@frehilm/ordna-cli 0.1.4 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/assign.d.ts.map +1 -1
- package/dist/commands/assign.js +3 -2
- package/dist/commands/assign.js.map +1 -1
- package/dist/commands/commit.d.ts.map +1 -1
- package/dist/commands/commit.js +3 -2
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +8 -3
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/init.d.ts +15 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +67 -17
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +3 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/move.d.ts.map +1 -1
- package/dist/commands/move.js +3 -2
- package/dist/commands/move.js.map +1 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +3 -2
- package/dist/commands/show.js.map +1 -1
- package/dist/lib/ensure-context.d.ts +19 -0
- package/dist/lib/ensure-context.d.ts.map +1 -0
- package/dist/lib/ensure-context.js +39 -0
- package/dist/lib/ensure-context.js.map +1 -0
- package/dist/lib/prompt-mode.d.ts +12 -0
- package/dist/lib/prompt-mode.d.ts.map +1 -0
- package/dist/lib/prompt-mode.js +43 -0
- package/dist/lib/prompt-mode.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +59 -4
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/LineInput.d.ts +26 -0
- package/dist/tui/LineInput.d.ts.map +1 -0
- package/dist/tui/LineInput.js +114 -0
- package/dist/tui/LineInput.js.map +1 -0
- package/dist/tui/SetupModal.d.ts +14 -0
- package/dist/tui/SetupModal.d.ts.map +1 -0
- package/dist/tui/SetupModal.js +67 -0
- package/dist/tui/SetupModal.js.map +1 -0
- package/dist/tui/Sidebar.d.ts +1 -1
- package/dist/tui/Sidebar.d.ts.map +1 -1
- package/dist/tui/Sidebar.js +20 -2
- package/dist/tui/Sidebar.js.map +1 -1
- package/dist/tui/TaskDetail.d.ts.map +1 -1
- package/dist/tui/TaskDetail.js +1 -1
- package/dist/tui/TaskDetail.js.map +1 -1
- package/dist/tui/TaskEditor.d.ts.map +1 -1
- package/dist/tui/TaskEditor.js +96 -28
- package/dist/tui/TaskEditor.js.map +1 -1
- package/dist/tui/TextPrompt.d.ts.map +1 -1
- package/dist/tui/TextPrompt.js +2 -2
- package/dist/tui/TextPrompt.js.map +1 -1
- package/dist/tui/hooks.d.ts +17 -0
- package/dist/tui/hooks.d.ts.map +1 -1
- package/dist/tui/hooks.js +53 -1
- package/dist/tui/hooks.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +38 -3
- package/dist/tui/index.js.map +1 -1
- package/package.json +3 -3
- package/templates/AGENTS.md +25 -0
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,YAAY,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,YAAY,IAAI,OAAO,CAqHtC"}
|
package/dist/cli.js
CHANGED
|
@@ -17,7 +17,20 @@ export function buildProgram() {
|
|
|
17
17
|
program
|
|
18
18
|
.command("init")
|
|
19
19
|
.description("Create .ordna/config.yaml and tasks/ if missing")
|
|
20
|
-
.
|
|
20
|
+
.option("-s, --storage <mode>", "explicit storage mode: file | hybrid | namespace (skips auto-detect)")
|
|
21
|
+
.action(async (opts) => {
|
|
22
|
+
const storage = opts.storage === "file" ||
|
|
23
|
+
opts.storage === "hybrid" ||
|
|
24
|
+
opts.storage === "namespace"
|
|
25
|
+
? opts.storage
|
|
26
|
+
: undefined;
|
|
27
|
+
if (opts.storage && !storage) {
|
|
28
|
+
console.error(`Invalid --storage value: "${opts.storage}". Use file, hybrid, or namespace.`);
|
|
29
|
+
process.exitCode = 1;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
await runInit(storage ? { storage } : {});
|
|
33
|
+
});
|
|
21
34
|
program
|
|
22
35
|
.command("list")
|
|
23
36
|
.alias("ls")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,UAAU,YAAY;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACL,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,mDAAmD,CAAC;SAChE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnB,OAAO;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assign.d.ts","sourceRoot":"","sources":["../../src/commands/assign.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assign.d.ts","sourceRoot":"","sources":["../../src/commands/assign.ts"],"names":[],"mappings":"AAIA,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvF"}
|
package/dist/commands/assign.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { updateTask } from "@frehilm/ordna-core";
|
|
2
|
+
import { ensureContextOrExit } from "../lib/ensure-context.js";
|
|
2
3
|
import { c } from "../colors.js";
|
|
3
4
|
export async function runAssign(id, assignee) {
|
|
4
|
-
const ctx =
|
|
5
|
+
const ctx = await ensureContextOrExit();
|
|
5
6
|
const value = assignee && assignee.length > 0 ? assignee : null;
|
|
6
7
|
try {
|
|
7
8
|
const task = await updateTask(id, { assignee: value }, ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assign.js","sourceRoot":"","sources":["../../src/commands/assign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"assign.js","sourceRoot":"","sources":["../../src/commands/assign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAAU,EAAE,QAA4B;IACvE,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;;YAC5D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAIA,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1E"}
|
package/dist/commands/commit.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { commitTasks
|
|
1
|
+
import { commitTasks } from "@frehilm/ordna-core";
|
|
2
|
+
import { ensureContextOrExit } from "../lib/ensure-context.js";
|
|
2
3
|
import { c } from "../colors.js";
|
|
3
4
|
export async function runCommit(message) {
|
|
4
|
-
const ctx =
|
|
5
|
+
const ctx = await ensureContextOrExit();
|
|
5
6
|
try {
|
|
6
7
|
await commitTasks(ctx, message);
|
|
7
8
|
console.log(c.green("Committed."));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA2B;IAC1D,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACxC,IAAI,CAAC;QACJ,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIhE,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBzF"}
|
package/dist/commands/create.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createTask } from "@frehilm/ordna-core";
|
|
2
|
+
import { ensureContextOrExit } from "../lib/ensure-context.js";
|
|
2
3
|
import { c } from "../colors.js";
|
|
3
4
|
export async function runCreate(title, options = {}) {
|
|
4
5
|
if (!title || title.trim().length === 0) {
|
|
@@ -6,7 +7,7 @@ export async function runCreate(title, options = {}) {
|
|
|
6
7
|
process.exitCode = 1;
|
|
7
8
|
return;
|
|
8
9
|
}
|
|
9
|
-
const ctx =
|
|
10
|
+
const ctx = await ensureContextOrExit();
|
|
10
11
|
const task = await createTask({
|
|
11
12
|
title,
|
|
12
13
|
assignee: options.assignee ?? null,
|
|
@@ -16,6 +17,10 @@ export async function runCreate(title, options = {}) {
|
|
|
16
17
|
status: options.status,
|
|
17
18
|
}, ctx);
|
|
18
19
|
console.log(c.green(`Created ${c.bold(task.id)}: ${task.title}`));
|
|
19
|
-
|
|
20
|
+
// Namespace-mode tasks have no on-disk path — skip the path line
|
|
21
|
+
// rather than printing `undefined`. The id is the durable handle.
|
|
22
|
+
if (task.filePath) {
|
|
23
|
+
console.log(c.dim(` ${task.filePath}`));
|
|
24
|
+
}
|
|
20
25
|
}
|
|
21
26
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAUjC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,UAAyB,EAAE;IACzE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACR,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B;QACC,KAAK;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QACnC,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,EACD,GAAG,CACH,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE,iEAAiE;IACjE,kEAAkE;IAClE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;AACF,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,2 +1,16 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface InitOptions {
|
|
2
|
+
storage?: "file" | "hybrid" | "namespace";
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Initialise Ordna in the current directory.
|
|
6
|
+
*
|
|
7
|
+
* - `--storage=file|hybrid|namespace` skips detection entirely and
|
|
8
|
+
* writes the chosen mode (the chosen mode dictates whether
|
|
9
|
+
* `tasks/` is created).
|
|
10
|
+
* - Without `--storage`, runs detection. Confident modes auto-write.
|
|
11
|
+
* On the "ask" branch (git repo, no signals), prompts the user.
|
|
12
|
+
* - If `.ordna/config.yaml` already exists, this is a no-op (preserves
|
|
13
|
+
* existing behaviour).
|
|
14
|
+
*/
|
|
15
|
+
export declare function runInit(options?: InitOptions, cwd?: string): Promise<void>;
|
|
2
16
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;CAC1C;AAYD;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAC5B,OAAO,GAAE,WAAgB,EACzB,GAAG,GAAE,MAAsB,GACzB,OAAO,CAAC,IAAI,CAAC,CAoEf"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import { detectStorageMode, writeStorageConfig, } from "@frehilm/ordna-core";
|
|
3
4
|
import { c } from "../colors.js";
|
|
4
|
-
|
|
5
|
+
import { promptStorageMode } from "../lib/prompt-mode.js";
|
|
6
|
+
const FILE_MODE_TEMPLATE = `# Ordna config — all keys optional.
|
|
7
|
+
storage: file
|
|
5
8
|
tasksDir: tasks
|
|
6
9
|
schema: ordna
|
|
7
10
|
statuses: [todo, doing, done]
|
|
@@ -9,29 +12,76 @@ idPrefix: T
|
|
|
9
12
|
zeroPaddedIds: 3
|
|
10
13
|
webPort: 7420
|
|
11
14
|
`;
|
|
12
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Initialise Ordna in the current directory.
|
|
17
|
+
*
|
|
18
|
+
* - `--storage=file|hybrid|namespace` skips detection entirely and
|
|
19
|
+
* writes the chosen mode (the chosen mode dictates whether
|
|
20
|
+
* `tasks/` is created).
|
|
21
|
+
* - Without `--storage`, runs detection. Confident modes auto-write.
|
|
22
|
+
* On the "ask" branch (git repo, no signals), prompts the user.
|
|
23
|
+
* - If `.ordna/config.yaml` already exists, this is a no-op (preserves
|
|
24
|
+
* existing behaviour).
|
|
25
|
+
*/
|
|
26
|
+
export async function runInit(options = {}, cwd = process.cwd()) {
|
|
13
27
|
const configDir = join(cwd, ".ordna");
|
|
14
28
|
const configFile = join(configDir, "config.yaml");
|
|
15
|
-
|
|
16
|
-
|
|
29
|
+
if (existsSync(configFile)) {
|
|
30
|
+
console.log(c.dim("Ordna already initialized in this repo."));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Decide storage mode: explicit flag, then detection, then prompt.
|
|
34
|
+
let storage;
|
|
35
|
+
if (options.storage) {
|
|
36
|
+
storage = options.storage;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const detected = await detectStorageMode(cwd);
|
|
40
|
+
if (detected.mode === "ask") {
|
|
41
|
+
if (process.stdin.isTTY) {
|
|
42
|
+
storage = await promptStorageMode();
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.error(c.red("This directory is a git repo with no storage signals, and this isn't an interactive shell."));
|
|
46
|
+
console.error(c.dim(" Re-run with `ordna init --storage=file|hybrid|namespace`."));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else if (detected.mode === "default-file") {
|
|
51
|
+
storage = "file";
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
storage = detected.mode;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
17
57
|
if (!existsSync(configDir)) {
|
|
18
58
|
mkdirSync(configDir, { recursive: true });
|
|
19
|
-
created++;
|
|
20
59
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
60
|
+
// File mode keeps the full default template (visible defaults are
|
|
61
|
+
// good docs for new users). Hybrid + namespace get the minimal
|
|
62
|
+
// config from `writeStorageConfig` (just the storage key).
|
|
63
|
+
if (storage === "file") {
|
|
64
|
+
writeFileSync(configFile, FILE_MODE_TEMPLATE, "utf8");
|
|
65
|
+
const tasksDir = join(cwd, "tasks");
|
|
66
|
+
if (!existsSync(tasksDir)) {
|
|
67
|
+
mkdirSync(tasksDir, { recursive: true });
|
|
68
|
+
}
|
|
24
69
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
70
|
+
else {
|
|
71
|
+
writeStorageConfig(cwd, storage);
|
|
72
|
+
if (storage === "hybrid") {
|
|
73
|
+
// Hybrid still uses files; create the tasks/ dir so subsequent
|
|
74
|
+
// `ordna create` calls find a writable location.
|
|
75
|
+
const tasksDir = join(cwd, "tasks");
|
|
76
|
+
if (!existsSync(tasksDir)) {
|
|
77
|
+
mkdirSync(tasksDir, { recursive: true });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
28
80
|
}
|
|
29
|
-
|
|
30
|
-
console.log(c.dim("Ordna already initialized in this repo."));
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
console.log(c.green("Initialized Ordna."));
|
|
81
|
+
console.log(c.green(`Initialized Ordna (storage: ${c.bold(storage)}).`));
|
|
34
82
|
console.log(c.dim(` ${configFile}`));
|
|
35
|
-
|
|
83
|
+
if (storage !== "namespace") {
|
|
84
|
+
console.log(c.dim(` ${join(cwd, "tasks")}/`));
|
|
85
|
+
}
|
|
36
86
|
}
|
|
37
87
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtE"}
|
package/dist/commands/list.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { listTasks } from "@frehilm/ordna-core";
|
|
2
|
+
import { ensureContextOrExit } from "../lib/ensure-context.js";
|
|
2
3
|
import { c } from "../colors.js";
|
|
3
4
|
import { formatListRow, summarizeStatuses } from "../format.js";
|
|
4
5
|
export async function runList(options = {}) {
|
|
5
|
-
const ctx =
|
|
6
|
+
const ctx = await ensureContextOrExit();
|
|
6
7
|
const tasks = await listTasks(ctx, options);
|
|
7
8
|
if (tasks.length === 0) {
|
|
8
9
|
console.log(c.dim("No tasks. Create one with `ordna create \"title\"`."));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAQhE,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAAuB,EAAE;IACtD,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAC1E,OAAO;IACR,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../src/commands/move.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../src/commands/move.ts"],"names":[],"mappings":"AAKA,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASvE"}
|
package/dist/commands/move.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { moveTask } from "@frehilm/ordna-core";
|
|
2
|
+
import { ensureContextOrExit } from "../lib/ensure-context.js";
|
|
2
3
|
import { c } from "../colors.js";
|
|
3
4
|
import { colorStatus } from "../format.js";
|
|
4
5
|
export async function runMove(id, status) {
|
|
5
|
-
const ctx =
|
|
6
|
+
const ctx = await ensureContextOrExit();
|
|
6
7
|
try {
|
|
7
8
|
const task = await moveTask(id, status, ctx);
|
|
8
9
|
console.log(`${c.bold(task.id)} → ${colorStatus(task.status)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move.js","sourceRoot":"","sources":["../../src/commands/move.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"move.js","sourceRoot":"","sources":["../../src/commands/move.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAU,EAAE,MAAc;IACvD,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACxC,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAKA,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvD"}
|
package/dist/commands/show.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getTask } from "@frehilm/ordna-core";
|
|
2
|
+
import { ensureContextOrExit } from "../lib/ensure-context.js";
|
|
2
3
|
import { c } from "../colors.js";
|
|
3
4
|
import { formatTask } from "../format.js";
|
|
4
5
|
export async function runShow(id) {
|
|
5
|
-
const task = await getTask(id,
|
|
6
|
+
const task = await getTask(id, await ensureContextOrExit());
|
|
6
7
|
if (!task) {
|
|
7
8
|
console.error(c.red(`Task ${id} not found.`));
|
|
8
9
|
process.exitCode = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAU;IACvC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,MAAM,mBAAmB,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACR,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type StoreContext } from "@frehilm/ordna-core";
|
|
2
|
+
/**
|
|
3
|
+
* Wrap `createContext` with the auto-detect + prompt flow used by
|
|
4
|
+
* every one-shot CLI command. Handles three cases:
|
|
5
|
+
*
|
|
6
|
+
* 1. **Storage already known** (config file present OR `ORDNA_STORAGE`
|
|
7
|
+
* env var set OR detection lands on a confident mode) — runs as
|
|
8
|
+
* today, no interaction.
|
|
9
|
+
* 2. **`NeedsModeSelection` + TTY** — prompt the user 1/2/3, write
|
|
10
|
+
* the chosen config, retry.
|
|
11
|
+
* 3. **`NeedsModeSelection` + non-TTY** — print a clear error pointing
|
|
12
|
+
* at `ordna init` and the `ORDNA_STORAGE` env var, then exit with
|
|
13
|
+
* code 1.
|
|
14
|
+
*
|
|
15
|
+
* Returns the constructed `StoreContext` on success, or never returns
|
|
16
|
+
* when it exits the process on the non-TTY path.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ensureContextOrExit(): Promise<StoreContext>;
|
|
19
|
+
//# sourceMappingURL=ensure-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-context.d.ts","sourceRoot":"","sources":["../../src/lib/ensure-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,YAAY,EAEjB,MAAM,qBAAqB,CAAC;AAI7B;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CAwBjE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { createContext, ensureStorageConfig, NeedsModeSelection, writeStorageConfig, } from "@frehilm/ordna-core";
|
|
2
|
+
import { c } from "../colors.js";
|
|
3
|
+
import { promptStorageMode } from "./prompt-mode.js";
|
|
4
|
+
/**
|
|
5
|
+
* Wrap `createContext` with the auto-detect + prompt flow used by
|
|
6
|
+
* every one-shot CLI command. Handles three cases:
|
|
7
|
+
*
|
|
8
|
+
* 1. **Storage already known** (config file present OR `ORDNA_STORAGE`
|
|
9
|
+
* env var set OR detection lands on a confident mode) — runs as
|
|
10
|
+
* today, no interaction.
|
|
11
|
+
* 2. **`NeedsModeSelection` + TTY** — prompt the user 1/2/3, write
|
|
12
|
+
* the chosen config, retry.
|
|
13
|
+
* 3. **`NeedsModeSelection` + non-TTY** — print a clear error pointing
|
|
14
|
+
* at `ordna init` and the `ORDNA_STORAGE` env var, then exit with
|
|
15
|
+
* code 1.
|
|
16
|
+
*
|
|
17
|
+
* Returns the constructed `StoreContext` on success, or never returns
|
|
18
|
+
* when it exits the process on the non-TTY path.
|
|
19
|
+
*/
|
|
20
|
+
export async function ensureContextOrExit() {
|
|
21
|
+
try {
|
|
22
|
+
await ensureStorageConfig(process.cwd());
|
|
23
|
+
return createContext();
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
if (!(err instanceof NeedsModeSelection))
|
|
27
|
+
throw err;
|
|
28
|
+
if (process.stdin.isTTY) {
|
|
29
|
+
const mode = await promptStorageMode();
|
|
30
|
+
writeStorageConfig(process.cwd(), mode);
|
|
31
|
+
return createContext();
|
|
32
|
+
}
|
|
33
|
+
// Non-TTY: be explicit about how to recover.
|
|
34
|
+
console.error(c.red("No .ordna/config.yaml found and this isn't an interactive shell."));
|
|
35
|
+
console.error(c.dim(" Run `ordna init` from a terminal, or set ORDNA_STORAGE=file|hybrid|namespace to skip the prompt."));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=ensure-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-context.js","sourceRoot":"","sources":["../../src/lib/ensure-context.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAElB,kBAAkB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACxC,IAAI,CAAC;QACJ,MAAM,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACzC,OAAO,aAAa,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,CAAC,GAAG,YAAY,kBAAkB,CAAC;YAAE,MAAM,GAAG,CAAC;QACpD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC;YACvC,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO,aAAa,EAAE,CAAC;QACxB,CAAC;QACD,6CAA6C;QAC7C,OAAO,CAAC,KAAK,CACZ,CAAC,CAAC,GAAG,CACJ,kEAAkE,CAClE,CACD,CAAC;QACF,OAAO,CAAC,KAAK,CACZ,CAAC,CAAC,GAAG,CACJ,oGAAoG,CACpG,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive prompt asking the user to pick one of the three storage
|
|
3
|
+
* modes. Used by `ordna init` (no `--storage` flag) and by every
|
|
4
|
+
* one-shot CLI command via `ensureContextOrExit` when detection
|
|
5
|
+
* lands on `ask`.
|
|
6
|
+
*
|
|
7
|
+
* Terse by design: three numbered options, two-line description, an
|
|
8
|
+
* inline 1/2/3 prompt. Trade-off discussion belongs in the README,
|
|
9
|
+
* not the prompt.
|
|
10
|
+
*/
|
|
11
|
+
export declare function promptStorageMode(): Promise<"file" | "hybrid" | "namespace">;
|
|
12
|
+
//# sourceMappingURL=prompt-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-mode.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-mode.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CACjD,MAAM,GAAG,QAAQ,GAAG,WAAW,CAC/B,CAkCA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createInterface } from "node:readline/promises";
|
|
2
|
+
import { c } from "../colors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Interactive prompt asking the user to pick one of the three storage
|
|
5
|
+
* modes. Used by `ordna init` (no `--storage` flag) and by every
|
|
6
|
+
* one-shot CLI command via `ensureContextOrExit` when detection
|
|
7
|
+
* lands on `ask`.
|
|
8
|
+
*
|
|
9
|
+
* Terse by design: three numbered options, two-line description, an
|
|
10
|
+
* inline 1/2/3 prompt. Trade-off discussion belongs in the README,
|
|
11
|
+
* not the prompt.
|
|
12
|
+
*/
|
|
13
|
+
export async function promptStorageMode() {
|
|
14
|
+
console.log("");
|
|
15
|
+
console.log(c.bold("Pick a storage mode for this project."));
|
|
16
|
+
console.log("");
|
|
17
|
+
console.log(` 1) ${c.bold("file")} Tasks as markdown in tasks/ ${c.dim("(default, recommended)")}`);
|
|
18
|
+
console.log(` 2) ${c.bold("hybrid")} Tasks as files + synced ID allocator + audit log in git`);
|
|
19
|
+
console.log(` 3) ${c.bold("namespace")} Tasks as git refs; working tree stays clean`);
|
|
20
|
+
console.log("");
|
|
21
|
+
const rl = createInterface({
|
|
22
|
+
input: process.stdin,
|
|
23
|
+
output: process.stdout,
|
|
24
|
+
});
|
|
25
|
+
try {
|
|
26
|
+
while (true) {
|
|
27
|
+
const answer = (await rl.question(c.dim("Pick a storage mode [1/2/3, default 1]: ")))
|
|
28
|
+
.trim()
|
|
29
|
+
.toLowerCase();
|
|
30
|
+
if (answer === "" || answer === "1" || answer === "file")
|
|
31
|
+
return "file";
|
|
32
|
+
if (answer === "2" || answer === "hybrid")
|
|
33
|
+
return "hybrid";
|
|
34
|
+
if (answer === "3" || answer === "namespace")
|
|
35
|
+
return "namespace";
|
|
36
|
+
console.log(c.dim(" Please enter 1, 2, or 3."));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
rl.close();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=prompt-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-mode.js","sourceRoot":"","sources":["../../src/lib/prompt-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IAGtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CACV,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAC7F,CAAC;IACF,OAAO,CAAC,GAAG,CACV,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,6DAA6D,CACrF,CAAC;IACF,OAAO,CAAC,GAAG,CACV,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,8CAA8C,CACzE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,EAAE,GAAG,eAAe,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC,CAAC;IACH,IAAI,CAAC;QACJ,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,CACd,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CACpE;iBACC,IAAI,EAAE;iBACN,WAAW,EAAE,CAAC;YAChB,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC;YACxE,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC3D,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,WAAW;gBAAE,OAAO,WAAW,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClD,CAAC;IACF,CAAC;YAAS,CAAC;QACV,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;AACF,CAAC"}
|
package/dist/tui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,eAAe,EAA4B,MAAM,aAAa,CAAC;AAoE7E,MAAM,WAAW,QAAQ;IACxB,SAAS,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACnC;AAED,wBAAgB,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,GAAE,QAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgvBlF"}
|