nolo-cli 0.1.21 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/agent-runtime/agentRecordConfig.ts +4 -0
  2. package/agent-runtime/hostAdapter.ts +2 -0
  3. package/agent-runtime/index.ts +7 -0
  4. package/agent-runtime/localLoop.ts +2 -0
  5. package/agent-runtime/platformChatProvider.ts +3 -0
  6. package/agent-runtime/runtimeToolPolicy.ts +92 -0
  7. package/agent-runtime/types.ts +42 -0
  8. package/agentRunCommand.ts +74 -1
  9. package/agentRuntimeCommands.ts +17 -89
  10. package/ai/agent/streamAgentChatTurn.ts +104 -20
  11. package/ai/chat/fetchUtils.native.ts +2 -0
  12. package/ai/chat/fetchUtils.ts +2 -0
  13. package/ai/chat/sendOpenAICompletionsRequest.ts +56 -0
  14. package/ai/chat/sendOpenAIResponseRequest.ts +64 -0
  15. package/ai/llm/kimi.ts +1 -1
  16. package/ai/llm/providers.ts +3 -0
  17. package/ai/llm/reasoningModels.ts +1 -0
  18. package/ai/skills/skillDocProtocol.ts +95 -3
  19. package/ai/taskRun/taskRunProtocol.ts +1 -0
  20. package/ai/tools/agent/agentTools.ts +17 -0
  21. package/ai/tools/agent/startAgentDialogTool.ts +53 -0
  22. package/ai/tools/modelUsageTools.ts +5 -0
  23. package/client/agentRun.test.ts +257 -7
  24. package/client/agentRun.ts +133 -34
  25. package/client/localRuntimeAdapter.test.ts +2 -0
  26. package/client/localRuntimeAdapter.ts +15 -2
  27. package/database/actions/common.ts +4 -3
  28. package/database/config.ts +19 -0
  29. package/machineCommands.ts +400 -45
  30. package/package.json +4 -2
  31. package/render/canvas/canvasEditContext.ts +127 -0
  32. package/render/canvas/canvasRuntime.ts +57 -0
  33. package/render/canvas/canvasSnapshotParser.ts +76 -0
  34. package/render/canvas/canvasTree.ts +308 -0
  35. package/render/canvas/types.ts +46 -0
  36. package/render/layout/deleteBehavior.ts +52 -0
  37. package/render/layout/mainLayoutSidebar.ts +17 -0
  38. package/render/layout/mainLayoutViewMode.ts +56 -0
  39. package/render/layout/topbarUtils.ts +87 -0
  40. package/render/layout/useDevReloadPending.ts +30 -0
  41. package/render/page/createPageAction.ts +183 -0
  42. package/render/page/docSlice.ts +468 -0
  43. package/render/page/server/createPage.ts +174 -0
  44. package/render/page/server/handleCreatePage.ts +91 -0
  45. package/render/page/server/index.ts +4 -0
  46. package/render/page/types.ts +17 -0
  47. package/render/page/useKeyboardSave.ts +48 -0
  48. package/render/styles/zIndex.ts +12 -0
  49. package/render/surf/WeatherIconStyles.ts +17 -0
  50. package/render/surf/color.ts +9 -0
  51. package/render/surf/config.ts +46 -0
  52. package/render/surf/screens/style.ts +1 -0
  53. package/render/surf/styles/ToggleButtonStyles.ts +8 -0
  54. package/render/surf/utils/groupedWeatherData.ts +32 -0
  55. package/render/surf/weatherUtils.ts +50 -0
  56. package/render/table/activityColumns.ts +6 -0
  57. package/render/table/createTableAction.ts +270 -0
  58. package/render/table/deleteTableAction.ts +129 -0
  59. package/render/table/fetchAndCacheTableRows.ts +174 -0
  60. package/render/table/tableSlice.ts +1106 -0
  61. package/render/table/tableView.ts +289 -0
  62. package/render/table/toolValueUtils.ts +363 -0
  63. package/render/table/types.ts +252 -0
  64. package/render/table/useCreateTable.ts +72 -0
  65. package/render/table/useTable.ts +61 -0
  66. package/render/table/utils/tableSerialization.ts +50 -0
  67. package/render/web/elements/artifactPreviewCode.ts +43 -0
  68. package/render/web/elements/artifactRuntimePreload.ts +52 -0
  69. package/render/web/elements/codeBlockAutoPreview.ts +10 -0
  70. package/render/web/elements/mermaidPreview.ts +21 -0
  71. package/render/web/ui/useInlineEdit.ts +135 -0
  72. package/tableCommands.ts +42 -5
package/tableCommands.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { DEFAULT_NOLO_SERVER_URL } from "./defaultServer";
2
+ import { includeTableActivityColumns } from "./render/table/activityColumns";
2
3
 
3
4
  type EnvLike = Record<string, string | undefined>;
4
5
  type OutputLike = { write(chunk: string): unknown };
@@ -34,10 +35,24 @@ function parseJsonOption<T>(args: string[], flag: string): T | undefined {
34
35
  }
35
36
  }
36
37
 
38
+ function parseJsonOptionAlias<T>(args: string[], primaryFlag: string, aliasFlag: string): T | undefined {
39
+ const primary = readOption(args, primaryFlag);
40
+ const alias = readOption(args, aliasFlag);
41
+ const raw = primary || alias;
42
+ if (!raw) return undefined;
43
+ try {
44
+ return JSON.parse(raw) as T;
45
+ } catch (error) {
46
+ const usedFlag = primary ? primaryFlag : aliasFlag;
47
+ throw new Error(`${usedFlag} must be valid JSON: ${error instanceof Error ? error.message : String(error)}`);
48
+ }
49
+ }
50
+
37
51
  function parseOutputMode(raw: string): OutputMode {
38
52
  if (!raw) return "full";
53
+ if (raw === "json") return "raw";
39
54
  if (raw === "full" || raw === "raw" || raw === "items" || raw === "jsonl") return raw;
40
- throw new Error(`--output must be one of full, raw, items, jsonl; got ${raw}`);
55
+ throw new Error(`--output must be one of full, raw, items, json, jsonl; got ${raw}`);
41
56
  }
42
57
 
43
58
  function parseTableArg(raw: string): { tenantId?: string; tableId?: string } {
@@ -94,10 +109,26 @@ function formatOutput(input: { envelope: any; rawData: any; mode: OutputMode }):
94
109
  return Array.isArray(items) ? items.map((item) => JSON.stringify(item)).join("\n") : JSON.stringify(items);
95
110
  }
96
111
 
112
+ function mergeQueryShortcutFilters(args: string[], filters: Record<string, unknown> | undefined): Record<string, unknown> | undefined {
113
+ const row = readOption(args, "--row") || readOption(args, "--row-id");
114
+ const rowDbKey = readOption(args, "--row-dbkey");
115
+ const shortcutFilters: Record<string, unknown> = {};
116
+ if (row) {
117
+ if (row.startsWith("row-")) shortcutFilters.dbKey = row;
118
+ else shortcutFilters.rowId = row;
119
+ }
120
+ if (rowDbKey) shortcutFilters.dbKey = rowDbKey;
121
+ if (Object.keys(shortcutFilters).length === 0) return filters;
122
+ return {
123
+ ...(filters ?? {}),
124
+ ...shortcutFilters,
125
+ };
126
+ }
127
+
97
128
  function usage(): string {
98
129
  return [
99
130
  "Usage:",
100
- " nolo table query --table <tableId|metaKey> [--tenant-id <userId>] [--filters <json>] [--columns <json-array>] [--no-base-fields] [--output full|raw|items|jsonl]",
131
+ " nolo table query --table <tableId|metaKey> [--tenant-id <userId>] [--filters <json>|--filter <json>] [--row <rowId|rowDbKey>] [--columns <json-array>] [--include-activity] [--no-base-fields] [--output full|raw|items|json|jsonl]",
101
132
  "",
102
133
  ].join("\n");
103
134
  }
@@ -117,7 +148,10 @@ export async function runTableQueryCommand(args: string[], deps: TableCommandDep
117
148
  try {
118
149
  outputMode = parseOutputMode(readOption(args, "--output"));
119
150
  columns = parseJsonOption<string[]>(args, "--columns");
120
- filters = parseJsonOption<Record<string, unknown>>(args, "--filters");
151
+ filters = mergeQueryShortcutFilters(
152
+ args,
153
+ parseJsonOptionAlias<Record<string, unknown>>(args, "--filters", "--filter")
154
+ );
121
155
  } catch (error) {
122
156
  output.write(`[nolo] table query failed: ${error instanceof Error ? error.message : String(error)}\n`);
123
157
  return 1;
@@ -127,6 +161,7 @@ export async function runTableQueryCommand(args: string[], deps: TableCommandDep
127
161
  const authToken = resolveAuthToken(args, env);
128
162
  const tenantId = readOption(args, "--tenant-id") || tableArg.tenantId || env.USER_ID || parseJwtTenantId(authToken);
129
163
  const tableId = tableArg.tableId;
164
+ const hasSingleRowShortcut = Boolean(readOption(args, "--row") || readOption(args, "--row-id") || readOption(args, "--row-dbkey"));
130
165
  if (!tenantId || !tableId) {
131
166
  output.write(usage());
132
167
  return 1;
@@ -149,9 +184,11 @@ export async function runTableQueryCommand(args: string[], deps: TableCommandDep
149
184
  tenantId,
150
185
  tableId,
151
186
  filters: filters ?? {},
152
- columns,
187
+ columns: hasFlag(args, "--include-activity")
188
+ ? includeTableActivityColumns(columns)
189
+ : columns,
153
190
  includeBaseFields: !hasFlag(args, "--no-base-fields"),
154
- limit: Number(readOption(args, "--limit") || 20),
191
+ limit: Number(readOption(args, "--limit") || (hasSingleRowShortcut ? 1 : 20)),
155
192
  offset: Number(readOption(args, "--offset") || 0),
156
193
  sortBy: readOption(args, "--sort-by") || "updatedAt",
157
194
  sortOrder: readOption(args, "--sort-order") === "asc" ? "asc" : "desc",