hngr 0.9.0 → 0.10.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 +36 -0
- package/dist/{catalog-CmtREMFr.mjs → catalog-CfpeEevk.mjs} +630 -8
- package/dist/{commands-Bjui8-Nt.mjs → commands-UsF7HECR.mjs} +1 -1
- package/dist/index.mjs +138 -7
- package/dist/{mcp-C-oJ6J5B.mjs → mcp-BKyfjqcx.mjs} +1 -1
- package/dist/{scope-8BZjgIXy.mjs → scope-DRg-ddFn.mjs} +16 -1
- package/dist/{skills-CqHGxo_M.mjs → skills-gJqYAVg2.mjs} +260 -5
- package/dist/sync-D25awtDG.mjs +278 -0
- package/package.json +1 -1
|
@@ -53,7 +53,8 @@ const EXCLUDED_PATHS = [
|
|
|
53
53
|
"/api/v1/auth/device/deny",
|
|
54
54
|
"/api/v1/teams/{team_id}/invitations",
|
|
55
55
|
"/api/v1/team-invitations",
|
|
56
|
-
"/api/v1/oauth"
|
|
56
|
+
"/api/v1/oauth",
|
|
57
|
+
"/api/v1/sync-tasks"
|
|
57
58
|
];
|
|
58
59
|
/**
|
|
59
60
|
* Single operations whose path still generates other commands. Category
|
|
@@ -741,7 +742,7 @@ const COMMANDS = deriveCommands({
|
|
|
741
742
|
"patch": {
|
|
742
743
|
"operationId": "updateMe",
|
|
743
744
|
"summary": "Update the authenticated Principal's profile.",
|
|
744
|
-
"description": "Omitted fields are left unchanged and an empty string clears a field.\nCredentials, the username and the platform role are not part of the\nprofile. Agents may change only their display name.\n\n`If-Match` must carry the current
|
|
745
|
+
"description": "Omitted fields are left unchanged and an empty string clears a field.\nCredentials, the username and the platform role are not part of the\nprofile. Agents may change only their display name.\n\n`If-Match` must carry the current `ETag` of `GET /me`: a missing\nvalue answers 428 and a stale one 412. A `W/` prefix that a compressing\nintermediary added to the tag is tolerated.\n",
|
|
745
746
|
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
746
747
|
"parameters": [{ "$ref": "#/components/parameters/IfMatch" }],
|
|
747
748
|
"requestBody": {
|
|
@@ -1358,7 +1359,7 @@ const COMMANDS = deriveCommands({
|
|
|
1358
1359
|
"patch": {
|
|
1359
1360
|
"operationId": "updateCapability",
|
|
1360
1361
|
"summary": "Change a Capability's description, visibility or Category.",
|
|
1361
|
-
"description": "Omitted fields are left unchanged. `category` is three-state: omitted\nleaves the Category unchanged, `null` clears it, and a slug replaces it\nwith a live Category of the Capability's own Namespace. The change\napplies to every Version at once and publishes none. `kind`,\n`namespace` and `name` are immutable, so sending any of them returns\n400.\n\nThe caller must manage the Capability's Namespace, under the same\nrules as `createCapability`. A deleted or unavailable Capability, one\nin an unusable Namespace, and a private one the caller does not manage\nreturn 404; those checks come before the precondition. `If-Match`\nmust then carry the current
|
|
1362
|
+
"description": "Omitted fields are left unchanged. `category` is three-state: omitted\nleaves the Category unchanged, `null` clears it, and a slug replaces it\nwith a live Category of the Capability's own Namespace. The change\napplies to every Version at once and publishes none. `kind`,\n`namespace` and `name` are immutable, so sending any of them returns\n400.\n\nThe caller must manage the Capability's Namespace, under the same\nrules as `createCapability`. A deleted or unavailable Capability, one\nin an unusable Namespace, and a private one the caller does not manage\nreturn 404; those checks come before the precondition. `If-Match`\nmust then carry the current `ETag` of `lookupCapability`: a missing\nvalue answers 428 and a stale one 412. A `W/` prefix that a\ncompressing intermediary added to the tag is tolerated, because its\nopaque value still identifies the representation. That `ETag` covers\nmanagement metadata only, including the assigned Category's id, name\nand slug, and excluding `download_count` and caller-relative fields,\nso downloads do not cause spurious 412s.\n",
|
|
1362
1363
|
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
1363
1364
|
"parameters": [{ "$ref": "#/components/parameters/IfMatch" }],
|
|
1364
1365
|
"requestBody": {
|
|
@@ -1858,7 +1859,11 @@ const COMMANDS = deriveCommands({
|
|
|
1858
1859
|
"team.member_removed",
|
|
1859
1860
|
"team.invitation_created",
|
|
1860
1861
|
"team.invitation_revoked",
|
|
1861
|
-
"team.invitation_accepted"
|
|
1862
|
+
"team.invitation_accepted",
|
|
1863
|
+
"sync_task.created",
|
|
1864
|
+
"sync_task.updated",
|
|
1865
|
+
"sync_task.deleted",
|
|
1866
|
+
"sync_run.triggered"
|
|
1862
1867
|
]
|
|
1863
1868
|
}
|
|
1864
1869
|
},
|
|
@@ -1874,7 +1879,9 @@ const COMMANDS = deriveCommands({
|
|
|
1874
1879
|
"device_authorization",
|
|
1875
1880
|
"principal",
|
|
1876
1881
|
"session",
|
|
1877
|
-
"team"
|
|
1882
|
+
"team",
|
|
1883
|
+
"sync_task",
|
|
1884
|
+
"sync_run"
|
|
1878
1885
|
]
|
|
1879
1886
|
}
|
|
1880
1887
|
},
|
|
@@ -2299,6 +2306,235 @@ const COMMANDS = deriveCommands({
|
|
|
2299
2306
|
"default": { "$ref": "#/components/responses/Problem" }
|
|
2300
2307
|
}
|
|
2301
2308
|
}
|
|
2309
|
+
},
|
|
2310
|
+
"/api/v1/sync-tasks": {
|
|
2311
|
+
"get": {
|
|
2312
|
+
"operationId": "listSyncTasks",
|
|
2313
|
+
"summary": "List sync tasks.",
|
|
2314
|
+
"description": "Platform Admin only. Newest first, paged by cursor.",
|
|
2315
|
+
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
2316
|
+
"parameters": [
|
|
2317
|
+
{
|
|
2318
|
+
"name": "include_deleted",
|
|
2319
|
+
"in": "query",
|
|
2320
|
+
"description": "Include soft-deleted tasks so their retained history stays reachable.",
|
|
2321
|
+
"schema": {
|
|
2322
|
+
"type": "boolean",
|
|
2323
|
+
"default": false
|
|
2324
|
+
}
|
|
2325
|
+
},
|
|
2326
|
+
{ "$ref": "#/components/parameters/Cursor" },
|
|
2327
|
+
{ "$ref": "#/components/parameters/Limit" }
|
|
2328
|
+
],
|
|
2329
|
+
"responses": {
|
|
2330
|
+
"200": {
|
|
2331
|
+
"description": "One page of sync tasks.",
|
|
2332
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncTaskList" } } }
|
|
2333
|
+
},
|
|
2334
|
+
"401": { "$ref": "#/components/responses/Problem" },
|
|
2335
|
+
"403": { "$ref": "#/components/responses/Problem" },
|
|
2336
|
+
"default": { "$ref": "#/components/responses/Problem" }
|
|
2337
|
+
}
|
|
2338
|
+
},
|
|
2339
|
+
"post": {
|
|
2340
|
+
"operationId": "createSyncTask",
|
|
2341
|
+
"summary": "Create a sync task.",
|
|
2342
|
+
"description": "Platform Admin only. The source is fixed to seek. A task is created\ndisabled unless `enabled` is true; the hidden sync Agent is created on\nfirst use. A second live task for the same source and target Namespace\nanswers 409.\n",
|
|
2343
|
+
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
2344
|
+
"parameters": [{ "$ref": "#/components/parameters/IdempotencyKey" }],
|
|
2345
|
+
"requestBody": {
|
|
2346
|
+
"required": true,
|
|
2347
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSyncTaskRequest" } } }
|
|
2348
|
+
},
|
|
2349
|
+
"responses": {
|
|
2350
|
+
"201": {
|
|
2351
|
+
"description": "The created task.",
|
|
2352
|
+
"headers": { "Location": { "schema": { "type": "string" } } },
|
|
2353
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncTask" } } }
|
|
2354
|
+
},
|
|
2355
|
+
"400": { "$ref": "#/components/responses/Problem" },
|
|
2356
|
+
"401": { "$ref": "#/components/responses/Problem" },
|
|
2357
|
+
"403": { "$ref": "#/components/responses/Problem" },
|
|
2358
|
+
"404": { "$ref": "#/components/responses/Problem" },
|
|
2359
|
+
"409": { "$ref": "#/components/responses/Problem" },
|
|
2360
|
+
"default": { "$ref": "#/components/responses/Problem" }
|
|
2361
|
+
}
|
|
2362
|
+
}
|
|
2363
|
+
},
|
|
2364
|
+
"/api/v1/sync-tasks/{task_id}": {
|
|
2365
|
+
"parameters": [{ "$ref": "#/components/parameters/SyncTaskID" }],
|
|
2366
|
+
"get": {
|
|
2367
|
+
"operationId": "getSyncTask",
|
|
2368
|
+
"summary": "Read one sync task.",
|
|
2369
|
+
"description": "Platform Admin only. A soft-deleted task is returned with `deleted_at` set.",
|
|
2370
|
+
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
2371
|
+
"responses": {
|
|
2372
|
+
"200": {
|
|
2373
|
+
"description": "The sync task.",
|
|
2374
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncTask" } } }
|
|
2375
|
+
},
|
|
2376
|
+
"401": { "$ref": "#/components/responses/Problem" },
|
|
2377
|
+
"403": { "$ref": "#/components/responses/Problem" },
|
|
2378
|
+
"404": { "$ref": "#/components/responses/Problem" },
|
|
2379
|
+
"default": { "$ref": "#/components/responses/Problem" }
|
|
2380
|
+
}
|
|
2381
|
+
},
|
|
2382
|
+
"patch": {
|
|
2383
|
+
"operationId": "updateSyncTask",
|
|
2384
|
+
"summary": "Change a sync task's enabled state, interval or default visibility.",
|
|
2385
|
+
"description": "Platform Admin only. Source and target Namespace are immutable.",
|
|
2386
|
+
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
2387
|
+
"requestBody": {
|
|
2388
|
+
"required": true,
|
|
2389
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSyncTaskRequest" } } }
|
|
2390
|
+
},
|
|
2391
|
+
"responses": {
|
|
2392
|
+
"200": {
|
|
2393
|
+
"description": "The updated sync task.",
|
|
2394
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncTask" } } }
|
|
2395
|
+
},
|
|
2396
|
+
"400": { "$ref": "#/components/responses/Problem" },
|
|
2397
|
+
"401": { "$ref": "#/components/responses/Problem" },
|
|
2398
|
+
"403": { "$ref": "#/components/responses/Problem" },
|
|
2399
|
+
"404": { "$ref": "#/components/responses/Problem" },
|
|
2400
|
+
"default": { "$ref": "#/components/responses/Problem" }
|
|
2401
|
+
}
|
|
2402
|
+
},
|
|
2403
|
+
"delete": {
|
|
2404
|
+
"operationId": "deleteSyncTask",
|
|
2405
|
+
"summary": "Soft-delete a sync task.",
|
|
2406
|
+
"description": "Platform Admin only. Runs and items are retained; Capabilities are never deleted.",
|
|
2407
|
+
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
2408
|
+
"responses": {
|
|
2409
|
+
"204": { "description": "Deleted." },
|
|
2410
|
+
"401": { "$ref": "#/components/responses/Problem" },
|
|
2411
|
+
"403": { "$ref": "#/components/responses/Problem" },
|
|
2412
|
+
"404": { "$ref": "#/components/responses/Problem" },
|
|
2413
|
+
"default": { "$ref": "#/components/responses/Problem" }
|
|
2414
|
+
}
|
|
2415
|
+
}
|
|
2416
|
+
},
|
|
2417
|
+
"/api/v1/sync-tasks/{task_id}/runs": {
|
|
2418
|
+
"parameters": [{ "$ref": "#/components/parameters/SyncTaskID" }],
|
|
2419
|
+
"get": {
|
|
2420
|
+
"operationId": "listSyncRuns",
|
|
2421
|
+
"summary": "List a task's runs.",
|
|
2422
|
+
"description": "Platform Admin only. Newest first, paged by cursor.",
|
|
2423
|
+
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
2424
|
+
"parameters": [{ "$ref": "#/components/parameters/Cursor" }, {
|
|
2425
|
+
"name": "limit",
|
|
2426
|
+
"in": "query",
|
|
2427
|
+
"schema": {
|
|
2428
|
+
"type": "integer",
|
|
2429
|
+
"minimum": 1,
|
|
2430
|
+
"maximum": 100,
|
|
2431
|
+
"default": 20
|
|
2432
|
+
}
|
|
2433
|
+
}],
|
|
2434
|
+
"responses": {
|
|
2435
|
+
"200": {
|
|
2436
|
+
"description": "One page of runs.",
|
|
2437
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncRunList" } } }
|
|
2438
|
+
},
|
|
2439
|
+
"401": { "$ref": "#/components/responses/Problem" },
|
|
2440
|
+
"403": { "$ref": "#/components/responses/Problem" },
|
|
2441
|
+
"404": { "$ref": "#/components/responses/Problem" },
|
|
2442
|
+
"default": { "$ref": "#/components/responses/Problem" }
|
|
2443
|
+
}
|
|
2444
|
+
},
|
|
2445
|
+
"post": {
|
|
2446
|
+
"operationId": "triggerSyncRun",
|
|
2447
|
+
"summary": "Start a manual run.",
|
|
2448
|
+
"description": "Platform Admin only. The run executes in the background; the response\nis 202 with the running run. A run already in flight answers 409\n`/problems/sync-busy`. dry_run plans without writing Capabilities.\n",
|
|
2449
|
+
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
2450
|
+
"requestBody": {
|
|
2451
|
+
"required": false,
|
|
2452
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/TriggerSyncRunRequest" } } }
|
|
2453
|
+
},
|
|
2454
|
+
"responses": {
|
|
2455
|
+
"202": {
|
|
2456
|
+
"description": "The run was accepted.",
|
|
2457
|
+
"headers": { "Location": { "schema": { "type": "string" } } },
|
|
2458
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncRunSummary" } } }
|
|
2459
|
+
},
|
|
2460
|
+
"400": { "$ref": "#/components/responses/Problem" },
|
|
2461
|
+
"401": { "$ref": "#/components/responses/Problem" },
|
|
2462
|
+
"403": { "$ref": "#/components/responses/Problem" },
|
|
2463
|
+
"404": { "$ref": "#/components/responses/Problem" },
|
|
2464
|
+
"409": { "$ref": "#/components/responses/Problem" },
|
|
2465
|
+
"default": { "$ref": "#/components/responses/Problem" }
|
|
2466
|
+
}
|
|
2467
|
+
}
|
|
2468
|
+
},
|
|
2469
|
+
"/api/v1/sync-tasks/{task_id}/runs/{run_id}": {
|
|
2470
|
+
"parameters": [{ "$ref": "#/components/parameters/SyncTaskID" }, {
|
|
2471
|
+
"name": "run_id",
|
|
2472
|
+
"in": "path",
|
|
2473
|
+
"required": true,
|
|
2474
|
+
"schema": {
|
|
2475
|
+
"type": "string",
|
|
2476
|
+
"format": "uuid"
|
|
2477
|
+
}
|
|
2478
|
+
}],
|
|
2479
|
+
"get": {
|
|
2480
|
+
"operationId": "getSyncRun",
|
|
2481
|
+
"summary": "Read one run with its per-Skill results.",
|
|
2482
|
+
"description": "Platform Admin only.",
|
|
2483
|
+
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
2484
|
+
"responses": {
|
|
2485
|
+
"200": {
|
|
2486
|
+
"description": "The run.",
|
|
2487
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncRun" } } }
|
|
2488
|
+
},
|
|
2489
|
+
"401": { "$ref": "#/components/responses/Problem" },
|
|
2490
|
+
"403": { "$ref": "#/components/responses/Problem" },
|
|
2491
|
+
"404": { "$ref": "#/components/responses/Problem" },
|
|
2492
|
+
"default": { "$ref": "#/components/responses/Problem" }
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
},
|
|
2496
|
+
"/api/v1/sync-tasks/{task_id}/items": {
|
|
2497
|
+
"parameters": [{ "$ref": "#/components/parameters/SyncTaskID" }],
|
|
2498
|
+
"get": {
|
|
2499
|
+
"operationId": "listSyncItems",
|
|
2500
|
+
"summary": "Read a task's current per-Skill state.",
|
|
2501
|
+
"description": "Platform Admin only. Ordered by upstream name, paged by cursor.",
|
|
2502
|
+
"security": [{ "sessionCookie": [] }, { "bearerToken": [] }],
|
|
2503
|
+
"parameters": [
|
|
2504
|
+
{
|
|
2505
|
+
"name": "state",
|
|
2506
|
+
"in": "query",
|
|
2507
|
+
"schema": {
|
|
2508
|
+
"type": "array",
|
|
2509
|
+
"items": { "$ref": "#/components/schemas/SyncItemState" }
|
|
2510
|
+
},
|
|
2511
|
+
"style": "form",
|
|
2512
|
+
"explode": true
|
|
2513
|
+
},
|
|
2514
|
+
{
|
|
2515
|
+
"name": "limit",
|
|
2516
|
+
"in": "query",
|
|
2517
|
+
"schema": {
|
|
2518
|
+
"type": "integer",
|
|
2519
|
+
"minimum": 1,
|
|
2520
|
+
"maximum": 500,
|
|
2521
|
+
"default": 50
|
|
2522
|
+
}
|
|
2523
|
+
},
|
|
2524
|
+
{ "$ref": "#/components/parameters/Cursor" }
|
|
2525
|
+
],
|
|
2526
|
+
"responses": {
|
|
2527
|
+
"200": {
|
|
2528
|
+
"description": "One page of items.",
|
|
2529
|
+
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncItemList" } } }
|
|
2530
|
+
},
|
|
2531
|
+
"400": { "$ref": "#/components/responses/Problem" },
|
|
2532
|
+
"401": { "$ref": "#/components/responses/Problem" },
|
|
2533
|
+
"403": { "$ref": "#/components/responses/Problem" },
|
|
2534
|
+
"404": { "$ref": "#/components/responses/Problem" },
|
|
2535
|
+
"default": { "$ref": "#/components/responses/Problem" }
|
|
2536
|
+
}
|
|
2537
|
+
}
|
|
2302
2538
|
}
|
|
2303
2539
|
},
|
|
2304
2540
|
components: {
|
|
@@ -2344,10 +2580,19 @@ const COMMANDS = deriveCommands({
|
|
|
2344
2580
|
"default": 20
|
|
2345
2581
|
}
|
|
2346
2582
|
},
|
|
2583
|
+
"SyncTaskID": {
|
|
2584
|
+
"name": "task_id",
|
|
2585
|
+
"in": "path",
|
|
2586
|
+
"required": true,
|
|
2587
|
+
"schema": {
|
|
2588
|
+
"type": "string",
|
|
2589
|
+
"format": "uuid"
|
|
2590
|
+
}
|
|
2591
|
+
},
|
|
2347
2592
|
"IfMatch": {
|
|
2348
2593
|
"name": "If-Match",
|
|
2349
2594
|
"in": "header",
|
|
2350
|
-
"description": "The current
|
|
2595
|
+
"description": "The current `ETag` of the resource. Not required by the schema because a missing value answers 428, not 400. A `W/` prefix, which a compressing intermediary adds to the tag while forwarding the same representation, is tolerated.",
|
|
2351
2596
|
"required": false,
|
|
2352
2597
|
"schema": { "type": "string" }
|
|
2353
2598
|
},
|
|
@@ -2443,7 +2688,7 @@ const COMMANDS = deriveCommands({
|
|
|
2443
2688
|
} },
|
|
2444
2689
|
"headers": {
|
|
2445
2690
|
"ETag": {
|
|
2446
|
-
"description": "A strong entity tag of the resource's management metadata: the fields\nthat describe how the resource is governed, such as a Capability's\nassigned Category's id, name and slug, excluding mutable counters like\na Capability's `download_count` and any caller-relative field. A\ndownload therefore never invalidates an editor's `If-Match`, and every\ncaller sees the same tag.\n",
|
|
2691
|
+
"description": "A strong entity tag of the resource's management metadata: the fields\nthat describe how the resource is governed, such as a Capability's\nassigned Category's id, name and slug, excluding mutable counters like\na Capability's `download_count` and any caller-relative field. A\ndownload therefore never invalidates an editor's `If-Match`, and every\ncaller sees the same tag. A compressing intermediary may weaken the\ntag to `W/\"…\"` in transit; replaying that form as `If-Match` still\nupdates the same representation.\n",
|
|
2447
2692
|
"required": true,
|
|
2448
2693
|
"schema": { "type": "string" }
|
|
2449
2694
|
},
|
|
@@ -3110,7 +3355,9 @@ const COMMANDS = deriveCommands({
|
|
|
3110
3355
|
"device_authorization",
|
|
3111
3356
|
"principal",
|
|
3112
3357
|
"session",
|
|
3113
|
-
"team"
|
|
3358
|
+
"team",
|
|
3359
|
+
"sync_task",
|
|
3360
|
+
"sync_run"
|
|
3114
3361
|
]
|
|
3115
3362
|
},
|
|
3116
3363
|
"resource_id": {
|
|
@@ -4228,6 +4475,345 @@ const COMMANDS = deriveCommands({
|
|
|
4228
4475
|
}
|
|
4229
4476
|
},
|
|
4230
4477
|
"additionalProperties": true
|
|
4478
|
+
},
|
|
4479
|
+
"SyncTask": {
|
|
4480
|
+
"type": "object",
|
|
4481
|
+
"required": [
|
|
4482
|
+
"id",
|
|
4483
|
+
"source",
|
|
4484
|
+
"namespace",
|
|
4485
|
+
"namespace_kind",
|
|
4486
|
+
"default_visibility",
|
|
4487
|
+
"interval_minutes",
|
|
4488
|
+
"enabled",
|
|
4489
|
+
"agent",
|
|
4490
|
+
"created_by",
|
|
4491
|
+
"created_at",
|
|
4492
|
+
"updated_at",
|
|
4493
|
+
"next_run_at",
|
|
4494
|
+
"consecutive_failures",
|
|
4495
|
+
"degraded",
|
|
4496
|
+
"deleted_at",
|
|
4497
|
+
"last_run",
|
|
4498
|
+
"item_counts"
|
|
4499
|
+
],
|
|
4500
|
+
"properties": {
|
|
4501
|
+
"id": {
|
|
4502
|
+
"type": "string",
|
|
4503
|
+
"format": "uuid"
|
|
4504
|
+
},
|
|
4505
|
+
"source": {
|
|
4506
|
+
"type": "string",
|
|
4507
|
+
"enum": ["seek"]
|
|
4508
|
+
},
|
|
4509
|
+
"namespace": { "$ref": "#/components/schemas/Name" },
|
|
4510
|
+
"namespace_kind": {
|
|
4511
|
+
"type": "string",
|
|
4512
|
+
"enum": [
|
|
4513
|
+
"system",
|
|
4514
|
+
"team",
|
|
4515
|
+
"principal"
|
|
4516
|
+
]
|
|
4517
|
+
},
|
|
4518
|
+
"default_visibility": { "$ref": "#/components/schemas/Visibility" },
|
|
4519
|
+
"interval_minutes": {
|
|
4520
|
+
"type": "integer",
|
|
4521
|
+
"minimum": 5,
|
|
4522
|
+
"maximum": 10080
|
|
4523
|
+
},
|
|
4524
|
+
"enabled": { "type": "boolean" },
|
|
4525
|
+
"agent": {
|
|
4526
|
+
"type": "object",
|
|
4527
|
+
"required": ["username"],
|
|
4528
|
+
"properties": { "username": { "type": "string" } }
|
|
4529
|
+
},
|
|
4530
|
+
"created_by": {
|
|
4531
|
+
"type": "string",
|
|
4532
|
+
"format": "uuid"
|
|
4533
|
+
},
|
|
4534
|
+
"created_at": {
|
|
4535
|
+
"type": "string",
|
|
4536
|
+
"format": "date-time"
|
|
4537
|
+
},
|
|
4538
|
+
"updated_at": {
|
|
4539
|
+
"type": "string",
|
|
4540
|
+
"format": "date-time"
|
|
4541
|
+
},
|
|
4542
|
+
"next_run_at": {
|
|
4543
|
+
"type": ["string", "null"],
|
|
4544
|
+
"format": "date-time"
|
|
4545
|
+
},
|
|
4546
|
+
"consecutive_failures": {
|
|
4547
|
+
"type": "integer",
|
|
4548
|
+
"minimum": 0
|
|
4549
|
+
},
|
|
4550
|
+
"degraded": { "type": "boolean" },
|
|
4551
|
+
"deleted_at": {
|
|
4552
|
+
"type": ["string", "null"],
|
|
4553
|
+
"format": "date-time"
|
|
4554
|
+
},
|
|
4555
|
+
"last_run": { "oneOf": [{ "$ref": "#/components/schemas/SyncRunSummary" }, { "type": "null" }] },
|
|
4556
|
+
"item_counts": {
|
|
4557
|
+
"type": "object",
|
|
4558
|
+
"additionalProperties": {
|
|
4559
|
+
"type": "integer",
|
|
4560
|
+
"format": "int64",
|
|
4561
|
+
"minimum": 0
|
|
4562
|
+
}
|
|
4563
|
+
}
|
|
4564
|
+
}
|
|
4565
|
+
},
|
|
4566
|
+
"SyncTaskList": {
|
|
4567
|
+
"type": "object",
|
|
4568
|
+
"required": ["items", "next_cursor"],
|
|
4569
|
+
"properties": {
|
|
4570
|
+
"items": {
|
|
4571
|
+
"type": "array",
|
|
4572
|
+
"items": { "$ref": "#/components/schemas/SyncTask" }
|
|
4573
|
+
},
|
|
4574
|
+
"next_cursor": { "$ref": "#/components/schemas/NextCursor" }
|
|
4575
|
+
}
|
|
4576
|
+
},
|
|
4577
|
+
"CreateSyncTaskRequest": {
|
|
4578
|
+
"type": "object",
|
|
4579
|
+
"required": ["namespace"],
|
|
4580
|
+
"properties": {
|
|
4581
|
+
"namespace": { "$ref": "#/components/schemas/Name" },
|
|
4582
|
+
"interval_minutes": {
|
|
4583
|
+
"type": "integer",
|
|
4584
|
+
"minimum": 5,
|
|
4585
|
+
"maximum": 10080,
|
|
4586
|
+
"default": 60
|
|
4587
|
+
},
|
|
4588
|
+
"default_visibility": {
|
|
4589
|
+
"$ref": "#/components/schemas/Visibility",
|
|
4590
|
+
"default": "internal"
|
|
4591
|
+
},
|
|
4592
|
+
"enabled": {
|
|
4593
|
+
"type": "boolean",
|
|
4594
|
+
"default": false
|
|
4595
|
+
}
|
|
4596
|
+
}
|
|
4597
|
+
},
|
|
4598
|
+
"UpdateSyncTaskRequest": {
|
|
4599
|
+
"type": "object",
|
|
4600
|
+
"minProperties": 1,
|
|
4601
|
+
"properties": {
|
|
4602
|
+
"enabled": { "type": "boolean" },
|
|
4603
|
+
"interval_minutes": {
|
|
4604
|
+
"type": "integer",
|
|
4605
|
+
"minimum": 5,
|
|
4606
|
+
"maximum": 10080
|
|
4607
|
+
},
|
|
4608
|
+
"default_visibility": { "$ref": "#/components/schemas/Visibility" }
|
|
4609
|
+
}
|
|
4610
|
+
},
|
|
4611
|
+
"TriggerSyncRunRequest": {
|
|
4612
|
+
"type": "object",
|
|
4613
|
+
"properties": { "dry_run": {
|
|
4614
|
+
"type": "boolean",
|
|
4615
|
+
"default": false
|
|
4616
|
+
} }
|
|
4617
|
+
},
|
|
4618
|
+
"SyncItemState": {
|
|
4619
|
+
"type": "string",
|
|
4620
|
+
"enum": [
|
|
4621
|
+
"active",
|
|
4622
|
+
"conflict",
|
|
4623
|
+
"missing",
|
|
4624
|
+
"orphaned",
|
|
4625
|
+
"deleted_locally",
|
|
4626
|
+
"error"
|
|
4627
|
+
]
|
|
4628
|
+
},
|
|
4629
|
+
"SyncRunStatus": {
|
|
4630
|
+
"type": "string",
|
|
4631
|
+
"enum": [
|
|
4632
|
+
"running",
|
|
4633
|
+
"succeeded",
|
|
4634
|
+
"partial",
|
|
4635
|
+
"failed",
|
|
4636
|
+
"interrupted",
|
|
4637
|
+
"skipped_overlap"
|
|
4638
|
+
]
|
|
4639
|
+
},
|
|
4640
|
+
"SyncRunItemStatus": {
|
|
4641
|
+
"type": "string",
|
|
4642
|
+
"enum": [
|
|
4643
|
+
"added",
|
|
4644
|
+
"updated",
|
|
4645
|
+
"skipped",
|
|
4646
|
+
"conflict",
|
|
4647
|
+
"missing",
|
|
4648
|
+
"deleted_locally",
|
|
4649
|
+
"failed"
|
|
4650
|
+
]
|
|
4651
|
+
},
|
|
4652
|
+
"SyncRunCounts": {
|
|
4653
|
+
"type": "object",
|
|
4654
|
+
"required": [
|
|
4655
|
+
"added",
|
|
4656
|
+
"updated",
|
|
4657
|
+
"skipped",
|
|
4658
|
+
"conflict",
|
|
4659
|
+
"missing",
|
|
4660
|
+
"failed",
|
|
4661
|
+
"deleted_locally"
|
|
4662
|
+
],
|
|
4663
|
+
"properties": {
|
|
4664
|
+
"added": {
|
|
4665
|
+
"type": "integer",
|
|
4666
|
+
"minimum": 0
|
|
4667
|
+
},
|
|
4668
|
+
"updated": {
|
|
4669
|
+
"type": "integer",
|
|
4670
|
+
"minimum": 0
|
|
4671
|
+
},
|
|
4672
|
+
"skipped": {
|
|
4673
|
+
"type": "integer",
|
|
4674
|
+
"minimum": 0
|
|
4675
|
+
},
|
|
4676
|
+
"conflict": {
|
|
4677
|
+
"type": "integer",
|
|
4678
|
+
"minimum": 0
|
|
4679
|
+
},
|
|
4680
|
+
"missing": {
|
|
4681
|
+
"type": "integer",
|
|
4682
|
+
"minimum": 0
|
|
4683
|
+
},
|
|
4684
|
+
"failed": {
|
|
4685
|
+
"type": "integer",
|
|
4686
|
+
"minimum": 0
|
|
4687
|
+
},
|
|
4688
|
+
"deleted_locally": {
|
|
4689
|
+
"type": "integer",
|
|
4690
|
+
"minimum": 0
|
|
4691
|
+
}
|
|
4692
|
+
}
|
|
4693
|
+
},
|
|
4694
|
+
"SyncRunSummary": {
|
|
4695
|
+
"type": "object",
|
|
4696
|
+
"required": [
|
|
4697
|
+
"id",
|
|
4698
|
+
"task_id",
|
|
4699
|
+
"trigger",
|
|
4700
|
+
"dry_run",
|
|
4701
|
+
"status",
|
|
4702
|
+
"started_at",
|
|
4703
|
+
"finished_at",
|
|
4704
|
+
"counts",
|
|
4705
|
+
"error_summary"
|
|
4706
|
+
],
|
|
4707
|
+
"properties": {
|
|
4708
|
+
"id": {
|
|
4709
|
+
"type": "string",
|
|
4710
|
+
"format": "uuid"
|
|
4711
|
+
},
|
|
4712
|
+
"task_id": {
|
|
4713
|
+
"type": "string",
|
|
4714
|
+
"format": "uuid"
|
|
4715
|
+
},
|
|
4716
|
+
"trigger": {
|
|
4717
|
+
"type": "string",
|
|
4718
|
+
"enum": ["schedule", "manual"]
|
|
4719
|
+
},
|
|
4720
|
+
"dry_run": { "type": "boolean" },
|
|
4721
|
+
"status": { "$ref": "#/components/schemas/SyncRunStatus" },
|
|
4722
|
+
"started_at": {
|
|
4723
|
+
"type": "string",
|
|
4724
|
+
"format": "date-time"
|
|
4725
|
+
},
|
|
4726
|
+
"finished_at": {
|
|
4727
|
+
"type": ["string", "null"],
|
|
4728
|
+
"format": "date-time"
|
|
4729
|
+
},
|
|
4730
|
+
"counts": { "$ref": "#/components/schemas/SyncRunCounts" },
|
|
4731
|
+
"error_summary": { "type": ["string", "null"] }
|
|
4732
|
+
}
|
|
4733
|
+
},
|
|
4734
|
+
"SyncRunItem": {
|
|
4735
|
+
"type": "object",
|
|
4736
|
+
"required": ["upstream_name", "status"],
|
|
4737
|
+
"properties": {
|
|
4738
|
+
"upstream_name": { "type": "string" },
|
|
4739
|
+
"upstream_path": { "type": "string" },
|
|
4740
|
+
"status": { "$ref": "#/components/schemas/SyncRunItemStatus" },
|
|
4741
|
+
"capability_id": {
|
|
4742
|
+
"type": ["string", "null"],
|
|
4743
|
+
"format": "uuid"
|
|
4744
|
+
},
|
|
4745
|
+
"namespace": { "type": "string" },
|
|
4746
|
+
"name": { "type": "string" },
|
|
4747
|
+
"path": { "type": "string" },
|
|
4748
|
+
"version": { "type": ["string", "null"] },
|
|
4749
|
+
"error": { "type": ["string", "null"] }
|
|
4750
|
+
}
|
|
4751
|
+
},
|
|
4752
|
+
"SyncRun": { "allOf": [{ "$ref": "#/components/schemas/SyncRunSummary" }, {
|
|
4753
|
+
"type": "object",
|
|
4754
|
+
"required": ["items"],
|
|
4755
|
+
"properties": { "items": {
|
|
4756
|
+
"type": "array",
|
|
4757
|
+
"items": { "$ref": "#/components/schemas/SyncRunItem" }
|
|
4758
|
+
} }
|
|
4759
|
+
}] },
|
|
4760
|
+
"SyncRunList": {
|
|
4761
|
+
"type": "object",
|
|
4762
|
+
"required": ["items", "next_cursor"],
|
|
4763
|
+
"properties": {
|
|
4764
|
+
"items": {
|
|
4765
|
+
"type": "array",
|
|
4766
|
+
"items": { "$ref": "#/components/schemas/SyncRunSummary" }
|
|
4767
|
+
},
|
|
4768
|
+
"next_cursor": { "$ref": "#/components/schemas/NextCursor" }
|
|
4769
|
+
}
|
|
4770
|
+
},
|
|
4771
|
+
"SyncItem": {
|
|
4772
|
+
"type": "object",
|
|
4773
|
+
"required": [
|
|
4774
|
+
"upstream_name",
|
|
4775
|
+
"state",
|
|
4776
|
+
"content_hash",
|
|
4777
|
+
"last_seen_at"
|
|
4778
|
+
],
|
|
4779
|
+
"properties": {
|
|
4780
|
+
"upstream_name": { "type": "string" },
|
|
4781
|
+
"upstream_path": { "type": "string" },
|
|
4782
|
+
"state": { "$ref": "#/components/schemas/SyncItemState" },
|
|
4783
|
+
"capability_id": {
|
|
4784
|
+
"type": ["string", "null"],
|
|
4785
|
+
"format": "uuid"
|
|
4786
|
+
},
|
|
4787
|
+
"namespace": { "type": "string" },
|
|
4788
|
+
"name": { "type": "string" },
|
|
4789
|
+
"path": { "type": "string" },
|
|
4790
|
+
"version": { "type": ["string", "null"] },
|
|
4791
|
+
"content_hash": { "type": "string" },
|
|
4792
|
+
"last_seen_at": {
|
|
4793
|
+
"type": "string",
|
|
4794
|
+
"format": "date-time"
|
|
4795
|
+
},
|
|
4796
|
+
"last_synced_at": {
|
|
4797
|
+
"type": ["string", "null"],
|
|
4798
|
+
"format": "date-time"
|
|
4799
|
+
},
|
|
4800
|
+
"last_run_id": {
|
|
4801
|
+
"type": ["string", "null"],
|
|
4802
|
+
"format": "uuid"
|
|
4803
|
+
},
|
|
4804
|
+
"error": { "type": ["string", "null"] }
|
|
4805
|
+
}
|
|
4806
|
+
},
|
|
4807
|
+
"SyncItemList": {
|
|
4808
|
+
"type": "object",
|
|
4809
|
+
"required": ["items", "next_cursor"],
|
|
4810
|
+
"properties": {
|
|
4811
|
+
"items": {
|
|
4812
|
+
"type": "array",
|
|
4813
|
+
"items": { "$ref": "#/components/schemas/SyncItem" }
|
|
4814
|
+
},
|
|
4815
|
+
"next_cursor": { "$ref": "#/components/schemas/NextCursor" }
|
|
4816
|
+
}
|
|
4231
4817
|
}
|
|
4232
4818
|
},
|
|
4233
4819
|
"securitySchemes": {
|
|
@@ -4382,6 +4968,42 @@ function workflowCatalog() {
|
|
|
4382
4968
|
destructive: false,
|
|
4383
4969
|
dryRun: true
|
|
4384
4970
|
},
|
|
4971
|
+
{
|
|
4972
|
+
name: "skills restore",
|
|
4973
|
+
summary: "Reinstall the skills a lock file records",
|
|
4974
|
+
group: "skills",
|
|
4975
|
+
args: [{
|
|
4976
|
+
name: "names",
|
|
4977
|
+
required: false,
|
|
4978
|
+
variadic: true,
|
|
4979
|
+
description: "Locked skill names to restore (default: every Hangar entry)"
|
|
4980
|
+
}],
|
|
4981
|
+
flags: [
|
|
4982
|
+
{
|
|
4983
|
+
name: "global",
|
|
4984
|
+
type: "boolean",
|
|
4985
|
+
description: "Read the user-level lock file instead of the project one"
|
|
4986
|
+
},
|
|
4987
|
+
{
|
|
4988
|
+
name: "agent",
|
|
4989
|
+
type: "string",
|
|
4990
|
+
repeatable: true,
|
|
4991
|
+
description: "Agent target id"
|
|
4992
|
+
},
|
|
4993
|
+
{
|
|
4994
|
+
name: "all",
|
|
4995
|
+
type: "boolean",
|
|
4996
|
+
description: "Install to all known agents"
|
|
4997
|
+
},
|
|
4998
|
+
{
|
|
4999
|
+
name: "copy",
|
|
5000
|
+
type: "boolean",
|
|
5001
|
+
description: "Copy instead of canonical + symlink"
|
|
5002
|
+
}
|
|
5003
|
+
],
|
|
5004
|
+
destructive: false,
|
|
5005
|
+
dryRun: true
|
|
5006
|
+
},
|
|
4385
5007
|
{
|
|
4386
5008
|
name: "skills publish",
|
|
4387
5009
|
summary: "Publish a local skill directory as a capability or a new version",
|