@wenathlan/devthink 2.0.13 → 2.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/accounts.ts +2087 -0
- package/agent.ts +2331 -0
- package/antigravity.ts +2139 -0
- package/apifreeze.ts +4146 -0
- package/auth.ts +642 -0
- package/background.ts +16837 -0
- package/bridge.ts +2080 -0
- package/build.ts +54 -0
- package/bun.ts +26 -0
- package/capture.ts +1614 -0
- package/checksecrets.ts +72 -0
- package/cjs.ts +9 -0
- package/cli.ts +3500 -0
- package/commands.ts +1101 -0
- package/companion.ts +450 -0
- package/compatibility.ts +37 -0
- package/config.ts +3137 -0
- package/constants.ts +943 -0
- package/core.ts +1473 -0
- package/crossbrowser.ts +1359 -0
- package/dashdone.ts +605 -0
- package/data.ts +943 -0
- package/database.ts +133 -0
- package/debug.ts +850 -0
- package/deno.ts +27 -0
- package/devthink.ts +707 -0
- package/dist/accounts.d.ts +409 -0
- package/dist/agent.d.ts +837 -0
- package/dist/antigravity.d.ts +380 -0
- package/dist/apifreeze.d.ts +113 -0
- package/dist/auth.d.ts +224 -0
- package/{bridge.d.ts → dist/bridge.d.ts} +1 -1
- package/dist/capture.d.ts +595 -0
- package/dist/cjs.d.ts +6 -0
- package/{cli.js → dist/cli.js} +2 -2
- package/dist/commands.d.ts +310 -0
- package/dist/compatibility.d.ts +17 -0
- package/dist/config.d.ts +1853 -0
- package/dist/constants.d.ts +637 -0
- package/dist/core.d.ts +361 -0
- package/dist/data.d.ts +330 -0
- package/dist/database.d.ts +24 -0
- package/dist/debug.d.ts +270 -0
- package/dist/engine.d.ts +74 -0
- package/dist/environments.d.ts +244 -0
- package/dist/evidence.d.ts +277 -0
- package/dist/export.d.ts +311 -0
- package/dist/fingerprint.d.ts +594 -0
- package/dist/flow.d.ts +300 -0
- package/dist/gates.d.ts +103 -0
- package/dist/identity.d.ts +51 -0
- package/dist/ids.d.ts +7 -0
- package/dist/llm.d.ts +652 -0
- package/dist/models.d.ts +1807 -0
- package/dist/net.d.ts +325 -0
- package/dist/neutral.d.ts +41 -0
- package/dist/oauth.d.ts +703 -0
- package/dist/page.d.ts +1166 -0
- package/dist/perf.d.ts +481 -0
- package/dist/plan.d.ts +134 -0
- package/dist/project.d.ts +395 -0
- package/dist/providers.d.ts +37 -0
- package/dist/quota.d.ts +453 -0
- package/dist/recovery.d.ts +621 -0
- package/dist/request.d.ts +1492 -0
- package/dist/run.d.ts +779 -0
- package/dist/runtime.d.ts +212 -0
- package/dist/search.d.ts +375 -0
- package/dist/security.d.ts +534 -0
- package/dist/serve.d.ts +136 -0
- package/dist/session.d.ts +296 -0
- package/dist/storage.d.ts +53 -0
- package/dist/streaming.d.ts +1119 -0
- package/dist/swarm.d.ts +328 -0
- package/dist/tools.d.ts +170 -0
- package/dist/types.d.ts +8357 -0
- package/dist/utils.d.ts +82 -0
- package/dist/version.d.ts +7 -0
- package/dist/versionregistry.d.ts +406 -0
- package/dist/views.d.ts +579 -0
- package/dist/workbenchsession.d.ts +69 -0
- package/dist/workflow.d.ts +649 -0
- package/docs/readme.md +92 -0
- package/docs/schemas/antigravity.json +192 -0
- package/engine.ts +1524 -0
- package/environments.ts +1005 -0
- package/evidence.ts +643 -0
- package/export.ts +889 -0
- package/fingerprint.ts +1458 -0
- package/flow.ts +1190 -0
- package/gates.ts +307 -0
- package/gateway.ts +34 -0
- package/hardening.ts +191 -0
- package/headless.ts +369 -0
- package/http.ts +2110 -0
- package/identity.ts +246 -0
- package/ids.ts +26 -0
- package/index.ts +369 -0
- package/llm.ts +2682 -0
- package/mcp.ts +1835 -0
- package/{memory.js → memory.ts} +3834 -2310
- package/models.ts +3805 -0
- package/modes.ts +43 -0
- package/net.ts +1214 -0
- package/neutral.ts +362 -0
- package/node.ts +26 -0
- package/oauth.ts +2216 -0
- package/offscreen.ts +170 -0
- package/pack.ts +956 -0
- package/package.json +175 -82
- package/page.ts +7824 -0
- package/pagebridge.ts +1116 -0
- package/perf.ts +957 -0
- package/plan.ts +672 -0
- package/plugin.ts +76 -0
- package/{policy.js → policy.ts} +5073 -4679
- package/prisma.config.ts +27 -0
- package/progress.ts +1308 -0
- package/project.ts +1291 -0
- package/protocol.ts +4187 -0
- package/providers.ts +246 -0
- package/quota.ts +1887 -0
- package/recovery.ts +2433 -0
- package/request.ts +4482 -0
- package/run.ts +2135 -0
- package/runtime.ts +526 -0
- package/search.ts +1760 -0
- package/security.ts +1673 -0
- package/serve.ts +419 -0
- package/server.ts +5538 -0
- package/session.ts +1162 -0
- package/storage.ts +182 -0
- package/streaming.ts +4101 -0
- package/swarm.ts +884 -0
- package/sync.ts +56 -0
- package/tests/agentcert.test.ts +128 -0
- package/tests/agentfleet.test.ts +214 -0
- package/tests/agentreview.test.ts +241 -0
- package/tests/agentstream.test.ts +335 -0
- package/tests/agentwork.test.ts +356 -0
- package/tests/apifreeze.test.ts +290 -0
- package/tests/apimap.test.ts +112 -0
- package/tests/approvalgate.test.ts +175 -0
- package/tests/artifactmanifest.test.ts +204 -0
- package/tests/attentionfeed.test.ts +163 -0
- package/tests/backgroundruns.test.ts +100 -0
- package/tests/batchscheduling.test.ts +131 -0
- package/tests/blackboard.test.ts +238 -0
- package/tests/bridge.test.ts +1088 -0
- package/tests/browsercoverage.test.ts +134 -0
- package/tests/browserpolyfills.test.ts +124 -0
- package/tests/build.mjs +1260 -0
- package/tests/clientauth.test.ts +223 -0
- package/tests/clitools.test.ts +578 -0
- package/tests/confirmgates.test.ts +190 -0
- package/tests/containerpack.test.ts +143 -0
- package/tests/controlflow.test.ts +2120 -0
- package/tests/coordination.test.ts +345 -0
- package/tests/copyscreen.test.ts +139 -0
- package/tests/core.test.ts +417 -0
- package/tests/costcert.test.ts +95 -0
- package/tests/crossbrowser.test.ts +115 -0
- package/tests/cspaudit.test.ts +79 -0
- package/tests/dashdone.test.ts +615 -0
- package/tests/datagrid.test.ts +137 -0
- package/tests/doccheck.test.ts +107 -0
- package/tests/dombatch.test.ts +109 -0
- package/tests/emulation.test.ts +282 -0
- package/tests/environments.test.ts +259 -0
- package/tests/evidenceviews.test.ts +88 -0
- package/tests/exporttools.test.ts +185 -0
- package/tests/firefoxprep.test.ts +134 -0
- package/tests/flowlibrary.test.ts +242 -0
- package/tests/flowrun.test.ts +303 -0
- package/tests/forensics.test.ts +439 -0
- package/tests/gateway.test.ts +939 -0
- package/tests/headlesslib.test.ts +171 -0
- package/tests/httpstream.test.ts +277 -0
- package/tests/immutablelog.test.ts +157 -0
- package/tests/inboundguard.test.ts +177 -0
- package/tests/lazyload.test.ts +72 -0
- package/tests/librarymodes.test.ts +623 -0
- package/tests/llm.test.ts +696 -0
- package/tests/manifest.test.ts +226 -0
- package/tests/maskinputs.test.ts +150 -0
- package/tests/matrixverify.test.ts +111 -0
- package/tests/mavenpack.test.ts +75 -0
- package/tests/mcpserver.test.ts +704 -0
- package/tests/memory.test.ts +4155 -0
- package/tests/memorycare.test.ts +230 -0
- package/tests/migrateplan.test.ts +349 -0
- package/tests/minimization.test.ts +414 -0
- package/tests/modelroute.test.ts +112 -0
- package/tests/multiagent.test.ts +440 -0
- package/tests/nativebridge.test.ts +807 -0
- package/tests/navigation.test.ts +284 -0
- package/tests/nugetpack.test.ts +83 -0
- package/tests/orchestration.test.ts +449 -0
- package/tests/originpolicy.test.ts +405 -0
- package/tests/outputcompare.test.ts +97 -0
- package/tests/package.test.ts +91 -0
- package/tests/pagebridge.test.ts +5909 -0
- package/tests/pentest.test.ts +75 -0
- package/tests/perfrecords.test.ts +257 -0
- package/tests/permdiff.test.ts +85 -0
- package/tests/phishguard.test.ts +128 -0
- package/tests/pickerviews.test.ts +155 -0
- package/tests/pipelines.test.ts +381 -0
- package/tests/planlint.test.ts +240 -0
- package/tests/planreview.test.ts +383 -0
- package/tests/platformtargets.test.ts +56 -0
- package/tests/policy.test.ts +8284 -0
- package/tests/portability.test.ts +96 -0
- package/tests/progress.test.ts +1036 -0
- package/tests/promptlibrary.test.ts +116 -0
- package/tests/protocol.test.ts +4793 -0
- package/tests/publishingpipeline.test.ts +314 -0
- package/tests/quickactions.test.ts +164 -0
- package/tests/readiness.test.ts +78 -0
- package/tests/recipes.test.ts +163 -0
- package/tests/redactshots.test.ts +216 -0
- package/tests/registernvidiakeys.ts +51 -0
- package/tests/relayserve.test.ts +304 -0
- package/tests/releasenotes.test.ts +276 -0
- package/tests/resilience.test.ts +467 -0
- package/tests/resourceaware.test.ts +187 -0
- package/tests/runbudget.test.ts +125 -0
- package/tests/runhistory.test.ts +299 -0
- package/tests/runreplay.test.ts +113 -0
- package/tests/runresume.test.ts +184 -0
- package/tests/runstate.test.ts +288 -0
- package/tests/runtimeadapters.test.ts +251 -0
- package/tests/safariskeleton.test.ts +115 -0
- package/tests/sandboxframe.test.ts +196 -0
- package/tests/sbom.test.ts +105 -0
- package/tests/secretvault.test.ts +188 -0
- package/tests/selcache.test.ts +111 -0
- package/tests/sessioninterface.test.ts +791 -0
- package/tests/sessions.test.ts +591 -0
- package/tests/siteprefs.test.ts +228 -0
- package/tests/snapshotdelta.test.ts +165 -0
- package/tests/statusviews.test.ts +237 -0
- package/tests/stepmeter.test.ts +200 -0
- package/tests/streamparse.test.ts +163 -0
- package/tests/stylepruning.test.ts +90 -0
- package/tests/surfaces.test.ts +282 -0
- package/tests/sweep.test.ts +78 -0
- package/tests/syncbridge.test.ts +164 -0
- package/tests/taskqueue.test.ts +206 -0
- package/tests/toolcalls.test.ts +336 -0
- package/tests/toolcatalog.test.ts +201 -0
- package/tests/torture-agent.test.ts +706 -0
- package/tests/torture-auth.test.ts +461 -0
- package/tests/torture-commands.test.ts +895 -0
- package/tests/torture-data.test.ts +923 -0
- package/tests/torture-environments.test.ts +285 -0
- package/tests/torture-export.test.ts +263 -0
- package/tests/torture-http.test.ts +1379 -0
- package/tests/torture-llm.test.ts +808 -0
- package/tests/torture-memory.test.ts +1084 -0
- package/tests/torture-plan.test.ts +829 -0
- package/tests/torture-run.test.ts +626 -0
- package/tests/torture-session.test.ts +928 -0
- package/tests/torture-swarm.test.ts +1245 -0
- package/tests/torture-tools.test.ts +964 -0
- package/tests/torture-workflow.test.ts +2354 -0
- package/tests/tourviews.test.ts +52 -0
- package/tests/transparency.test.ts +147 -0
- package/tests/trigger.test.ts +941 -0
- package/tests/v1sunset.test.ts +428 -0
- package/tests/virtlist.test.ts +94 -0
- package/tests/vision.test.ts +540 -0
- package/tests/vsixpack.test.ts +145 -0
- package/tests/webapi.test.ts +523 -0
- package/tests/workflow.test.ts +1785 -0
- package/tests/workfloweditor.test.ts +759 -0
- package/tests/xpipack.test.ts +128 -0
- package/tools.ts +734 -0
- package/types.ts +9908 -0
- package/umd.ts +9 -0
- package/utils.ts +249 -0
- package/version.ts +8 -0
- package/versionregistry.ts +1310 -0
- package/views.ts +2153 -0
- package/vitest.config.ts +12 -0
- package/web/App.tsx +78 -0
- package/web/README.md +47 -0
- package/web/capacitor.config.ts +46 -0
- package/web/const.ts +19 -0
- package/web/control.shell.tsx +66 -0
- package/web/dashboardpage.ts +554 -0
- package/web/db.ts +493 -0
- package/web/design.html +541 -0
- package/web/gatewayview/Gateway.tsx +345 -0
- package/web/gatewayview/config.ts +1042 -0
- package/web/gatewayview/definition.ts +174 -0
- package/web/icons.ts +15 -0
- package/{manifest.json → web/manifest.json} +1 -1
- package/web/optionspage.ts +691 -0
- package/web/popup.ts +1651 -0
- package/web/schema.prisma +176 -0
- package/web/sidepanel.ts +7941 -0
- package/web/sitemanifest.json +13 -0
- package/web/terminal-ui.tsx +622 -0
- package/web/transparencypage.ts +541 -0
- package/web/vite.config.ts +39 -0
- package/web/workspace.ts +23 -0
- package/workbenchmemory.ts +104 -0
- package/workbenchsession.ts +304 -0
- package/workflow.ts +4495 -0
- package/bridge.d.ts.map +0 -1
- package/bridge.js +0 -1877
- package/bun.d.ts.map +0 -1
- package/bun.js +0 -52329
- package/caps/background.json +0 -712
- package/caps/cli.json +0 -360
- package/caps/library.json +0 -3611
- package/caps/mcp.json +0 -126
- package/caps/pagebridge.json +0 -377
- package/caps/popup.json +0 -51
- package/caps/sidepanel.json +0 -522
- package/checksums.txt +0 -142
- package/cli.d.ts.map +0 -1
- package/companion.d.ts.map +0 -1
- package/companion.js +0 -389
- package/crossbrowser.d.ts.map +0 -1
- package/crossbrowser.js +0 -1191
- package/dashdone.d.ts.map +0 -1
- package/dashdone.js +0 -368
- package/deno.d.ts.map +0 -1
- package/deno.js +0 -52325
- package/devthink.umd.js +0 -52346
- package/fixtures/bun.ts +0 -7
- package/fixtures/cjs.js +0 -6
- package/fixtures/deno.ts +0 -6
- package/fixtures/example-org-pagestate.json +0 -22
- package/fixtures/importers/automa-workflow.json +0 -18
- package/fixtures/importers/selenium-side.json +0 -20
- package/fixtures/importers/tabular-plan.csv +0 -7
- package/fixtures/importers/uivision-macro.json +0 -10
- package/fixtures/importers/v1-plan.json +0 -13
- package/fixtures/mcp-client.mjs +0 -14
- package/fixtures/pages/checkout.html +0 -192
- package/fixtures/pages/dashboard.html +0 -110
- package/fixtures/pages/feed.html +0 -113
- package/fixtures/pages/product-grid.html +0 -150
- package/fixtures/plans/form-inventory-plan.json +0 -11
- package/fixtures/plans/release-notes-plan.json +0 -11
- package/fixtures/recipes/agentscompete.json +0 -11
- package/fixtures/recipes/agentsforms.json +0 -11
- package/fixtures/recipes/agentsmonitor.json +0 -11
- package/fixtures/recipes/agentsreview.json +0 -29
- package/fixtures/recipes/agentswarm.json +0 -11
- package/fixtures/recipes/fillcalendar.json +0 -12
- package/fixtures/recipes/fillcheckout.json +0 -13
- package/fixtures/recipes/filldependentdropdowns.json +0 -12
- package/fixtures/recipes/fillfromcsv.json +0 -13
- package/fixtures/recipes/fillloginform.json +0 -12
- package/fixtures/recipes/fillmultistepwizard.json +0 -13
- package/fixtures/recipes/fillregistration.json +0 -12
- package/fixtures/recipes/fillsearchfilters.json +0 -12
- package/fixtures/recipes/filltypeahead.json +0 -11
- package/fixtures/recipes/monitoralerts.json +0 -12
- package/fixtures/recipes/monitoravailability.json +0 -11
- package/fixtures/recipes/monitornetworkquiet.json +0 -12
- package/fixtures/recipes/monitorpagechanges.json +0 -11
- package/fixtures/recipes/monitorpricechange.json +0 -11
- package/fixtures/recipes/monitorschedule.json +0 -12
- package/fixtures/recipes/scrapedynamicprices.json +0 -13
- package/fixtures/recipes/scrapeimagegallery.json +0 -12
- package/fixtures/recipes/scrapeinfinitefeed.json +0 -13
- package/fixtures/recipes/scrapenestedlists.json +0 -12
- package/fixtures/recipes/scrapeproductgrid.json +0 -12
- package/fixtures/recipes/scrapereviews.json +0 -12
- package/fixtures/recipes/scrapesearchresults.json +0 -12
- package/fixtures/recipes/scrapetablepagination.json +0 -12
- package/fixtures/recipes/testaccessibility.json +0 -34
- package/fixtures/recipes/testconsoleerrors.json +0 -12
- package/fixtures/recipes/testdeeplinks.json +0 -12
- package/fixtures/recipes/testformvalidation.json +0 -13
- package/fixtures/recipes/testlayoutshift.json +0 -12
- package/fixtures/recipes/testlinkcheck.json +0 -12
- package/fixtures/recipes/testloadtiming.json +0 -12
- package/fixtures/recipes/testvisualdiff.json +0 -12
- package/fixtures/workflows/changelog-digest-workflow.json +0 -13
- package/fixtures/workflows/form-survey-workflow.json +0 -13
- package/gallery.json +0 -706
- package/hardening.d.ts.map +0 -1
- package/hardening.js +0 -188
- package/headless.d.ts.map +0 -1
- package/headless.js +0 -11522
- package/http.d.ts.map +0 -1
- package/http.js +0 -2165
- package/index.cjs +0 -54682
- package/index.d.ts.map +0 -1
- package/index.js +0 -52310
- package/index.neutral.js +0 -46343
- package/mcp.d.ts.map +0 -1
- package/mcp.js +0 -20515
- package/memory.d.ts.map +0 -1
- package/nativehost.template.json +0 -10
- package/node.cjs +0 -54686
- package/node.d.ts.map +0 -1
- package/pack.d.ts.map +0 -1
- package/pack.js +0 -805
- package/policy.d.ts.map +0 -1
- package/progress.d.ts.map +0 -1
- package/progress.js +0 -645
- package/protocol.d.ts.map +0 -1
- package/protocol.js +0 -8334
- package/schemas/audit.schema.json +0 -226
- package/schemas/capability.schema.json +0 -113
- package/schemas/envelope.schema.json +0 -162
- package/schemas/memory.schema.json +0 -51
- package/schemas/observation.schema.json +0 -113
- package/schemas/plan.schema.json +0 -208
- package/schemas/progress.schema.json +0 -126
- package/schemas/proposal.schema.json +0 -68
- package/schemas/session.schema.json +0 -82
- package/schemas/tool.schema.json +0 -94
- package/server.d.ts.map +0 -1
- package/server.js +0 -28877
- package/umd-example.html +0 -18
- package/umd.d.ts.map +0 -1
- /package/{bun.d.ts → dist/bun.d.ts} +0 -0
- /package/{cli.d.ts → dist/cli.d.ts} +0 -0
- /package/{companion.d.ts → dist/companion.d.ts} +0 -0
- /package/{crossbrowser.d.ts → dist/crossbrowser.d.ts} +0 -0
- /package/{dashdone.d.ts → dist/dashdone.d.ts} +0 -0
- /package/{deno.d.ts → dist/deno.d.ts} +0 -0
- /package/{hardening.d.ts → dist/hardening.d.ts} +0 -0
- /package/{headless.d.ts → dist/headless.d.ts} +0 -0
- /package/{http.d.ts → dist/http.d.ts} +0 -0
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{mcp.d.ts → dist/mcp.d.ts} +0 -0
- /package/{memory.d.ts → dist/memory.d.ts} +0 -0
- /package/{node.d.ts → dist/node.d.ts} +0 -0
- /package/{pack.d.ts → dist/pack.d.ts} +0 -0
- /package/{policy.d.ts → dist/policy.d.ts} +0 -0
- /package/{progress.d.ts → dist/progress.d.ts} +0 -0
- /package/{protocol.d.ts → dist/protocol.d.ts} +0 -0
- /package/{server.d.ts → dist/server.d.ts} +0 -0
- /package/{umd.d.ts → dist/umd.d.ts} +0 -0
package/dist/flow.d.ts
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The flow module of the 1.1.90 consolidation: every correlated variation of the flow logic interned in this one file, so the module family carries one surface without duplicate variations.
|
|
3
|
+
* The correlation is the flow a reviewed plan travels: flowlibrary holds the template store the flow starts from (schemastrict manifest validation, publisher signature verification with quarantine, grant diffs mapped onto originprofiles, fresh consent for sensitive entries, install and fork resolution into native workflow records); flowrun executes a plan file through the same pipeline the extension runs (the grants gate, the parseworkflowproposal validation, the per step consent gates routed to the consent provider, the driver execution and the sealed immutable log chain the run writes); and syncbridge moves the same manifests between machines behind an explicit opt in with digest conflict detection, so the template a flow starts from stays the template the bridge carries.
|
|
4
|
+
* Nothing is hardcoded: the registry origin and the endpoint of every provider stay user configured values, and no library, run or bridge path ever bypasses the human review.
|
|
5
|
+
*/
|
|
6
|
+
import type { flowlibraryentry, flowlibrarymanifest, publishdescriptor, workflowrecord, schemaerror } from "./types.js";
|
|
7
|
+
/** Computes the manifest digest every store deduplicates by and every sync conflict detects with. */
|
|
8
|
+
export declare function manifestdigest(manifest: flowlibrarymanifest): Promise<string>;
|
|
9
|
+
/** Validates one raw manifest under schemastrict: the shape errors name their path and expected shape, and the capability gate refuses kinds the installed capability set lacks. */
|
|
10
|
+
export declare function validatemanifest(input: {
|
|
11
|
+
manifest: unknown;
|
|
12
|
+
capabilities: string[];
|
|
13
|
+
}): Promise<{
|
|
14
|
+
ok: boolean;
|
|
15
|
+
errors: schemaerror[];
|
|
16
|
+
reason: string;
|
|
17
|
+
manifest?: flowlibrarymanifest;
|
|
18
|
+
}>;
|
|
19
|
+
/** Verifies the publisher signature of one manifest when present: the descriptor digest must match the recomputed manifest digest and the signature must seal the publisher, the digest and the provenance, so a signature over any other body refuses in full. */
|
|
20
|
+
export declare function verifypublishersignature(manifest: flowlibrarymanifest): Promise<{
|
|
21
|
+
verified: boolean;
|
|
22
|
+
reason: string;
|
|
23
|
+
}>;
|
|
24
|
+
/** Signs one manifest with the publisher seal so tests and publishers produce verifiable descriptors; the seal covers the digest and the provenance exactly as the verification reads them. */
|
|
25
|
+
export declare function signmanifest(manifest: flowlibrarymanifest, provenance: string, publishedat: number): Promise<publishdescriptor>;
|
|
26
|
+
/** Builds one flowlibrary entry with its provenance attached: an unverified publisher quarantines the entry while a verified signature installs it as available. */
|
|
27
|
+
export declare function libraryentryof(input: {
|
|
28
|
+
manifest: flowlibrarymanifest;
|
|
29
|
+
provenance: string;
|
|
30
|
+
now: number;
|
|
31
|
+
}): Promise<flowlibraryentry>;
|
|
32
|
+
/** Reads the grant diff of one manifest against the grants the profile holds: the added grants map onto originprofiles at import time so the import dialog shows exactly what the entry would newly hold. */
|
|
33
|
+
export declare function grantdiffof(input: {
|
|
34
|
+
manifest: flowlibrarymanifest;
|
|
35
|
+
heldgrants: string[];
|
|
36
|
+
}): {
|
|
37
|
+
added: string[];
|
|
38
|
+
kept: string[];
|
|
39
|
+
originmappings: Array<{
|
|
40
|
+
origin: string;
|
|
41
|
+
kinds: string[];
|
|
42
|
+
}>;
|
|
43
|
+
};
|
|
44
|
+
/** Reads the fresh consent descriptor a sensitive manifest needs before any import completes; a non sensitive manifest needs none. */
|
|
45
|
+
export declare function sensitiveconsentfor(manifest: flowlibrarymanifest, freshconsent: boolean): {
|
|
46
|
+
required: boolean;
|
|
47
|
+
reason: string;
|
|
48
|
+
};
|
|
49
|
+
/** Builds the proposal objective one library import lands as: the import never executes directly, it routes through the same proposal flow and plan review as every task. */
|
|
50
|
+
export declare function libraryproposalof(entry: flowlibraryentry): {
|
|
51
|
+
objective: string;
|
|
52
|
+
reviewed: boolean;
|
|
53
|
+
reason: string;
|
|
54
|
+
};
|
|
55
|
+
/** Resolves one manifest into a native workflow record: the steps keep their reviewed kinds while the selector namespaces rewrite for the local profile, and the record lands pending its review approval exactly like any import. */
|
|
56
|
+
export declare function installlibrary(input: {
|
|
57
|
+
entry: flowlibraryentry;
|
|
58
|
+
selectornamespace?: string;
|
|
59
|
+
now: number;
|
|
60
|
+
}): workflowrecord;
|
|
61
|
+
/** Diffs the versions of one library update before it replaces the local entry: the changed steps, the added grants and the version movement all surface so the update never overwrites silently. */
|
|
62
|
+
export declare function updatelibrary(input: {
|
|
63
|
+
incoming: flowlibraryentry;
|
|
64
|
+
existing: flowlibraryentry;
|
|
65
|
+
}): {
|
|
66
|
+
changedsteps: string[];
|
|
67
|
+
addedgrants: string[];
|
|
68
|
+
versionfrom: string;
|
|
69
|
+
versionto: string;
|
|
70
|
+
replace: boolean;
|
|
71
|
+
reason: string;
|
|
72
|
+
};
|
|
73
|
+
/** Reads the removal outcome of one library entry: the local forks stay untouched because a fork is an independent local workflow the store owns apart from its template. */
|
|
74
|
+
export declare function removelibrary(input: {
|
|
75
|
+
entry: flowlibraryentry;
|
|
76
|
+
forks: workflowrecord[];
|
|
77
|
+
}): {
|
|
78
|
+
removed: string;
|
|
79
|
+
keptforks: string[];
|
|
80
|
+
reason: string;
|
|
81
|
+
};
|
|
82
|
+
/** Forks one library entry into an independent local workflow: the fork copies the steps with their rewritten selectors and owns its own name from its creation on. */
|
|
83
|
+
export declare function forklibrary(input: {
|
|
84
|
+
entry: flowlibraryentry;
|
|
85
|
+
now: number;
|
|
86
|
+
}): workflowrecord;
|
|
87
|
+
/** Searches the flowlibrary entries for the dashboardpage browser: the query matches the title, the description and the publisher while the filter narrows the publisher, the sensitive mark or the state. */
|
|
88
|
+
export declare function librarysearch(input: {
|
|
89
|
+
entries: flowlibraryentry[];
|
|
90
|
+
query?: string;
|
|
91
|
+
filter?: {
|
|
92
|
+
publisher?: string;
|
|
93
|
+
sensitive?: boolean;
|
|
94
|
+
state?: string;
|
|
95
|
+
};
|
|
96
|
+
}): flowlibraryentry[];
|
|
97
|
+
/** Reads one browser row of a library entry: the publisher, the version and the required grants per entry the browser lists before any install. */
|
|
98
|
+
export declare function librarybrowserow(entry: flowlibraryentry): {
|
|
99
|
+
id: string;
|
|
100
|
+
title: string;
|
|
101
|
+
publisher: string;
|
|
102
|
+
version: string;
|
|
103
|
+
grants: string[];
|
|
104
|
+
sensitive: boolean;
|
|
105
|
+
state: string;
|
|
106
|
+
registry?: string;
|
|
107
|
+
};
|
|
108
|
+
/** Reads the full step list of one library entry the entry view shows before install: every step with its kind, label, target and namespace beside the data expectations with their minimization hints. */
|
|
109
|
+
export declare function librarystepsview(entry: flowlibraryentry): Array<{
|
|
110
|
+
id: string;
|
|
111
|
+
kind: string;
|
|
112
|
+
label: string;
|
|
113
|
+
target?: string;
|
|
114
|
+
namespace?: string;
|
|
115
|
+
families: string[];
|
|
116
|
+
fields: string[];
|
|
117
|
+
}>;
|
|
118
|
+
/** Reads the minimization summary of one manifest: the data families its steps expect and the fields each family limits itself to. */
|
|
119
|
+
export declare function dataexpectationssummary(manifest: flowlibrarymanifest): Array<{
|
|
120
|
+
family: string;
|
|
121
|
+
fields: string[];
|
|
122
|
+
steps: string[];
|
|
123
|
+
}>;
|
|
124
|
+
/** Builds one library lifecycle event for the immutable log and the store: every install, update and removal records with its entry provenance. */
|
|
125
|
+
export declare function libraryeventof(input: {
|
|
126
|
+
kind: "install" | "update" | "remove";
|
|
127
|
+
entryid: string;
|
|
128
|
+
title: string;
|
|
129
|
+
version: string;
|
|
130
|
+
detail: string;
|
|
131
|
+
now: number;
|
|
132
|
+
}): {
|
|
133
|
+
id: string;
|
|
134
|
+
kind: "install" | "update" | "remove";
|
|
135
|
+
entryid: string;
|
|
136
|
+
title: string;
|
|
137
|
+
version: string;
|
|
138
|
+
detail: string;
|
|
139
|
+
at: number;
|
|
140
|
+
};
|
|
141
|
+
/** Exports the manifest list of the flowlibrary for audit: one entry per manifest with its digest, publisher, version, state and provenance and no step payload. */
|
|
142
|
+
export declare function exportlibrarymanifests(entries: flowlibraryentry[]): Array<{
|
|
143
|
+
id: string;
|
|
144
|
+
title: string;
|
|
145
|
+
publisher: string;
|
|
146
|
+
version: string;
|
|
147
|
+
digest: string;
|
|
148
|
+
state: string;
|
|
149
|
+
provenance: string;
|
|
150
|
+
addedat: number;
|
|
151
|
+
}>;
|
|
152
|
+
import type { consentprovider, flowrunevent, flowrunoutcome, flowrunrequest, flowrungate, planfile, planfilestep, storedrunlog } from "./types.js";
|
|
153
|
+
/**
|
|
154
|
+
* Flowrun logic of the 1.1.67 family.
|
|
155
|
+
* The terminal executes a plan file through the same pipeline the extension runs: the request parses into its options, the plan file becomes a workflow proposal that passes the same parseworkflowproposal validation, the run never starts without an origin grant file or an interactive prompt, every sensitive step waits at its consent gate routed to the consent provider (the terminal prompt in the cli, a host callback in the headless library), every outcome lands in the sealed immutable log chain the run writes to its output directory, and the logstream events and the stepstimeline render for the terminal.
|
|
156
|
+
* The run never skips a gate: a refused gate revokes the run, a failed step fails it, and both exit non zero.
|
|
157
|
+
*/
|
|
158
|
+
/** The driver a flowrun executes its steps through: the extension driver rides the reviewed executor, the headless driver rides a remote browser session and the dry run driver validates without page effects. */
|
|
159
|
+
export interface flowdriver {
|
|
160
|
+
execute(step: planfilestep, at: number): Promise<{
|
|
161
|
+
state: "done" | "failed";
|
|
162
|
+
summary: string;
|
|
163
|
+
duration: number;
|
|
164
|
+
}>;
|
|
165
|
+
}
|
|
166
|
+
/** Parses one flowrun request from terminal arguments: the plan path is mandatory, the format defaults to human, the output directory defaults to the plan directory and the flags stay user choices. */
|
|
167
|
+
export declare function parseflowrunrequest(args: string[]): flowrunrequest;
|
|
168
|
+
/** Parses one origin grants file: a list of granted HTTPS origins the run holds for its whole duration. */
|
|
169
|
+
export declare function parsegrantsfile(value: unknown): string[];
|
|
170
|
+
/** Builds the workflow proposal value of one plan file so the same parseworkflowproposal validation the extension runs decides whether the run starts. */
|
|
171
|
+
export declare function flowproposalvalue(file: planfile): Record<string, unknown>;
|
|
172
|
+
/** Reads whether one plan file step is sensitive: the same risk and sensitive class derivation the extension runs decides which steps wait at a gate. */
|
|
173
|
+
export declare function flowstepsensitive(step: planfilestep): boolean;
|
|
174
|
+
/** Builds one flowrun gate wait: the gate the run holds at while the consent provider resolves it. */
|
|
175
|
+
export declare function flowgateof(step: planfilestep, origin: string, reason: string): flowrungate;
|
|
176
|
+
/** The dry run driver: it validates each step without page effects, so a flowrun with the dry run flag walks the plan and writes its chain without touching any browser. */
|
|
177
|
+
export declare function dryflowdriver(): flowdriver;
|
|
178
|
+
/** Reads the exit code of one flowrun state: a done run exits zero, a failed run exits one and a revoked run exits two. */
|
|
179
|
+
export declare function flowrunexitcodeof(state: flowrunoutcome["state"]): number;
|
|
180
|
+
/** Renders one flowrun event stream for the terminal: the human format prints one line per event and the json format prints one json object per line. */
|
|
181
|
+
export declare function renderflowevents(events: flowrunevent[], format: "human" | "json"): string;
|
|
182
|
+
/** Derives the stepstimeline rows of one flowrun from its events: one row per step with its status, summary and the gate wait it stood at. */
|
|
183
|
+
export declare function flowtimelinerowsof(events: flowrunevent[]): Array<{
|
|
184
|
+
stepid: string;
|
|
185
|
+
status: "waiting" | "done" | "failed" | "revoked";
|
|
186
|
+
summary: string;
|
|
187
|
+
at: number;
|
|
188
|
+
}>;
|
|
189
|
+
/** Renders the stepstimeline of one flowrun for the terminal: one line per step row with its status marker. */
|
|
190
|
+
export declare function renderflowtimeline(events: flowrunevent[]): string;
|
|
191
|
+
/** Runs one plan file through the same pipeline the extension runs: the grants gate, the workflow proposal validation, the per step consent gates routed to the provider, the driver execution and the sealed immutable log chain the run writes. */
|
|
192
|
+
export declare function runflow(input: {
|
|
193
|
+
request: flowrunrequest;
|
|
194
|
+
file: planfile;
|
|
195
|
+
grants: string[];
|
|
196
|
+
provider?: consentprovider;
|
|
197
|
+
driver?: flowdriver;
|
|
198
|
+
now: number;
|
|
199
|
+
clock?: () => number;
|
|
200
|
+
emit?: (event: flowrunevent) => void;
|
|
201
|
+
}): Promise<{
|
|
202
|
+
outcome: flowrunoutcome;
|
|
203
|
+
events: flowrunevent[];
|
|
204
|
+
log: storedrunlog;
|
|
205
|
+
}>;
|
|
206
|
+
/** Reads the flowrun report of one finished run: the outcome beside the rendered event stream and the terminal timeline, one json document the output directory keeps. */
|
|
207
|
+
export declare function flowrunreport(input: {
|
|
208
|
+
outcome: flowrunoutcome;
|
|
209
|
+
events: flowrunevent[];
|
|
210
|
+
}): {
|
|
211
|
+
version: string;
|
|
212
|
+
outcome: flowrunoutcome;
|
|
213
|
+
events: flowrunevent[];
|
|
214
|
+
timeline: string;
|
|
215
|
+
};
|
|
216
|
+
import type { syncbridgeconflict, syncbridgehook } from "./types.js";
|
|
217
|
+
/**
|
|
218
|
+
* Syncbridge logic of the 1.1.66 family.
|
|
219
|
+
* The manifest sync between machines lives here: every hook declares its provider, direction and state behind an explicit opt in with no default on, the file provider moves manifests through manual import and export while the web provider stays a stub behind the opt in gate, the digest of every manifest detects conflicts and both versions surface instead of a silent overwrite, and the scope gate refuses any payload that carries a secret or a log entry because the bridge moves manifests only.
|
|
220
|
+
* Nothing is hardcoded: the endpoint of every provider stays the user's configured value, and no hook ever turns itself on.
|
|
221
|
+
*/
|
|
222
|
+
/** Computes the sync digest of one manifest: the canonical body the conflict detection compares across machines. */
|
|
223
|
+
export declare function syncdigestof(manifest: flowlibrarymanifest): Promise<string>;
|
|
224
|
+
/** Builds one syncbridge hook with its opt in off: no hook ever defaults on, the user flips the opt in from the optionspage. */
|
|
225
|
+
export declare function syncbridgehookof(input: {
|
|
226
|
+
provider: "file" | "web";
|
|
227
|
+
direction: "pull" | "push" | "both";
|
|
228
|
+
endpoint: string;
|
|
229
|
+
now: number;
|
|
230
|
+
}): syncbridgehook;
|
|
231
|
+
/** Flips the explicit opt in of one hook: only the user turns a hook on or off and the state resets to idle. */
|
|
232
|
+
export declare function syncbridgeoptinflip(hook: syncbridgehook, optin: boolean): syncbridgehook;
|
|
233
|
+
/** Reads the provider registry the optionspage lists: the file provider with its manual import and export and the web provider stub behind the opt in gate. */
|
|
234
|
+
export declare function syncbridgeproviders(): Array<{
|
|
235
|
+
provider: "file" | "web";
|
|
236
|
+
label: string;
|
|
237
|
+
operations: string[];
|
|
238
|
+
note: string;
|
|
239
|
+
}>;
|
|
240
|
+
/** Exports one manifest list as the syncbridge file payload: the manifests travel with their digests while secrets and logs never enter the payload under any flag. */
|
|
241
|
+
export declare function syncbridgeexportpayload(manifests: flowlibrarymanifest[]): Promise<{
|
|
242
|
+
version: 1;
|
|
243
|
+
kind: "syncbridge";
|
|
244
|
+
manifests: flowlibrarymanifest[];
|
|
245
|
+
digests: string[];
|
|
246
|
+
exclusions: string[];
|
|
247
|
+
}>;
|
|
248
|
+
/** Validates one syncbridge payload for import: the scope gate refuses a payload that carries secrets or log entries in full while a manifest only payload validates with its digest list. */
|
|
249
|
+
export declare function syncbridgevalidate(payload: {
|
|
250
|
+
kind?: string;
|
|
251
|
+
manifests?: unknown;
|
|
252
|
+
digests?: unknown;
|
|
253
|
+
exclusions?: unknown;
|
|
254
|
+
secrets?: unknown;
|
|
255
|
+
logs?: unknown;
|
|
256
|
+
}): {
|
|
257
|
+
ok: boolean;
|
|
258
|
+
reason: string;
|
|
259
|
+
};
|
|
260
|
+
/** Runs one pull or push scan of a hook and returns its conflict records instead of a silent overwrite: the digest comparison of every manifest id surfaces both versions whenever the digests differ. */
|
|
261
|
+
export declare function syncbridgescan(input: {
|
|
262
|
+
hook: syncbridgehook;
|
|
263
|
+
local: Array<{
|
|
264
|
+
manifestid: string;
|
|
265
|
+
version: string;
|
|
266
|
+
digest: string;
|
|
267
|
+
}>;
|
|
268
|
+
remote: Array<{
|
|
269
|
+
manifestid: string;
|
|
270
|
+
version: string;
|
|
271
|
+
digest: string;
|
|
272
|
+
}>;
|
|
273
|
+
now: number;
|
|
274
|
+
}): Promise<{
|
|
275
|
+
conflicts: syncbridgeconflict[];
|
|
276
|
+
synced: string[];
|
|
277
|
+
reason: string;
|
|
278
|
+
}>;
|
|
279
|
+
/** Resolves one syncbridge conflict with a distinct user action: local keeps the local manifest, remote takes the remote one and merge defers the union to the user editor. */
|
|
280
|
+
export declare function resolveconflict(conflict: syncbridgeconflict, resolution: "local" | "remote" | "merge", now: number): syncbridgeconflict;
|
|
281
|
+
/** Lists the conflicts of one hook the optionspage shows with their resolve actions. */
|
|
282
|
+
export declare function conflictsfor(conflicts: syncbridgeconflict[], hookid?: string): syncbridgeconflict[];
|
|
283
|
+
/** Reads the web provider stub descriptor: the stub names its operations and stays honest that no network call ships before its backend exists. */
|
|
284
|
+
export declare function webproviderstub(hook: syncbridgehook): {
|
|
285
|
+
hookid: string;
|
|
286
|
+
endpoint: string;
|
|
287
|
+
optin: boolean;
|
|
288
|
+
operations: string[];
|
|
289
|
+
stub: true;
|
|
290
|
+
reason: string;
|
|
291
|
+
};
|
|
292
|
+
/** Reads the file provider adapter of one hook: pull parses a dropped sync payload, push serializes the manifest list and list reads the local manifests; every operation moves manifests only. */
|
|
293
|
+
export declare function fileproviderof(hook: syncbridgehook): {
|
|
294
|
+
hookid: string;
|
|
295
|
+
operations: Array<{
|
|
296
|
+
kind: "pull" | "push" | "list";
|
|
297
|
+
label: string;
|
|
298
|
+
}>;
|
|
299
|
+
};
|
|
300
|
+
//# sourceMappingURL=flow.d.ts.map
|
package/dist/gates.d.ts
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The gates module of the 1.1.90 consolidation: every correlated variation of the human confirmation gate logic interned in this one file, so the module family carries one surface without duplicate variations.
|
|
3
|
+
* The correlation is the human gate itself: confirmgates holds the sensitive class gates of the run steps (confirmpay for money, confirmdelete for destruction and confirmcreds for credentials, each resolved only through one distinct human action with no timeout path and no batch approval) and approvalgate holds the remote client gates of the agent protocol (the approval raise with the full call arguments, the client identity and the called tool in every prompt, the secret redaction of the marked fields, the approve and refuse resolution with its actor and latency record and the timeout that refuses an unanswered gate by default).
|
|
4
|
+
* No gate window, class list or batch rule is ever hardcoded anywhere in the family: every timeout stays the user's choice beside the documented default, the gate payloads show exactly what the human reviews, and no gate ever resolves without its distinct human action.
|
|
5
|
+
*/
|
|
6
|
+
import type { confirmgate, gatekind, gateresolution, sensitiveclass, toolstep } from "./types.js";
|
|
7
|
+
/** Maps the sensitive classes of one step to its gated family: payment classes gate through confirmpay, delete classes through confirmdelete and credential classes through confirmcreds, while publish grades and plain sensitive by default steps ride their consent window prompt alone. */
|
|
8
|
+
export declare function gatekindfor(classes: sensitiveclass[]): gatekind | undefined;
|
|
9
|
+
/** Builds the payload of one confirmpay gate: the amount, the payee origin and the target element of the step the human reviews. */
|
|
10
|
+
export declare function paypayload(input: {
|
|
11
|
+
amount?: string;
|
|
12
|
+
payeeorigin: string;
|
|
13
|
+
target?: string;
|
|
14
|
+
}): Record<string, string>;
|
|
15
|
+
/** Builds the payload of one confirmdelete gate: the target, the scope and the irreversibility of the destructive step the human reviews. */
|
|
16
|
+
export declare function deletepayload(input: {
|
|
17
|
+
target?: string;
|
|
18
|
+
scope: string;
|
|
19
|
+
irreversibility: string;
|
|
20
|
+
}): Record<string, string>;
|
|
21
|
+
/** Builds the payload of one confirmcreds gate: the credential label only, because the value stays behind the vault and no gate ever reveals it. */
|
|
22
|
+
export declare function credspayload(label: string): Record<string, string>;
|
|
23
|
+
/** Opens one confirm gate for a gated step: the payload the human reviews, the origin provenance and the open state that only an explicit user action resolves. */
|
|
24
|
+
export declare function opengate(input: {
|
|
25
|
+
kind: gatekind;
|
|
26
|
+
stepid: string;
|
|
27
|
+
runid: string;
|
|
28
|
+
origin: string;
|
|
29
|
+
payload: Record<string, string>;
|
|
30
|
+
now: number;
|
|
31
|
+
gateid?: string;
|
|
32
|
+
}): confirmgate;
|
|
33
|
+
/** Reads the state of the gate one step waits at: no gate, an open gate the step pauses at, a resolved gate the step passes and a refused gate the step never dispatches through. */
|
|
34
|
+
export declare function gatestateof(gates: confirmgate[], stepid: string): {
|
|
35
|
+
state: "none" | "open" | "resolved" | "refused";
|
|
36
|
+
gate?: confirmgate;
|
|
37
|
+
};
|
|
38
|
+
/** Resolves exactly one gate through one explicit human action: the decision names its acting user, an already resolved or refused gate stays terminal, and no timeout path exists because only a human resolves a gate. */
|
|
39
|
+
export declare function resolvegate(input: {
|
|
40
|
+
gates: confirmgate[];
|
|
41
|
+
gateid: string;
|
|
42
|
+
decision: "resolved" | "refused";
|
|
43
|
+
actor: string;
|
|
44
|
+
now: number;
|
|
45
|
+
}): {
|
|
46
|
+
gates: confirmgate[];
|
|
47
|
+
resolution?: gateresolution;
|
|
48
|
+
};
|
|
49
|
+
/** Refuses batch approvals: one human action resolves exactly one gate, so a resolution request that names several gates refuses in full. */
|
|
50
|
+
export declare function nobatchresolution(gateids: string[]): {
|
|
51
|
+
allowed: boolean;
|
|
52
|
+
reason: string;
|
|
53
|
+
};
|
|
54
|
+
/** Builds the plain language prompt of one gate: confirmpay names the amount, the payee origin and the target element, confirmdelete names the target, the scope and the irreversibility, and confirmcreds names the credential label only. */
|
|
55
|
+
export declare function gateprompttext(gate: confirmgate): string;
|
|
56
|
+
/** Builds the gate descriptor of one gated step from its reviewed shape: the payload fields the human reviews read from the step options, the plan origin and the vault label of a credential step. */
|
|
57
|
+
export declare function gateforstep(input: {
|
|
58
|
+
step: Pick<toolstep, "id" | "kind" | "target" | "options">;
|
|
59
|
+
classes: sensitiveclass[];
|
|
60
|
+
runid: string;
|
|
61
|
+
origin: string;
|
|
62
|
+
credentiallabel?: string;
|
|
63
|
+
now: number;
|
|
64
|
+
}): confirmgate | undefined;
|
|
65
|
+
import type { approvalrequest, approvalexec, clientidentity } from "./types.js";
|
|
66
|
+
/**
|
|
67
|
+
* Approval gates of the 1.1.55 agent protocol part two.
|
|
68
|
+
* Every sensitive tool call a remote client raises lands behind a human approval gate in this file: the gate raise with the full call arguments, the client identity and the called tool in every prompt, the secret redaction of the fields the user marked secret, the approve and refuse resolution with its actor and latency record, and the timeout that refuses an unanswered gate by default.
|
|
69
|
+
* The gates never bypass review: an approved gate executes exactly the call it holds while refused and expired gates never execute anything.
|
|
70
|
+
*/
|
|
71
|
+
/** The documented default approval window of two minutes; any user configured window wins and an unanswered gate refuses by default. */
|
|
72
|
+
export declare const defaultapprovalwindowms = 120000;
|
|
73
|
+
/** Raises one approval gate for a sensitive tool call: the full call arguments, the reason in plain language, the fields the user marked secret and the timeout that refuses by default. */
|
|
74
|
+
export declare function requireapproval(input: {
|
|
75
|
+
clientid: string;
|
|
76
|
+
tool: string;
|
|
77
|
+
reason: string;
|
|
78
|
+
params: Record<string, unknown>;
|
|
79
|
+
now: number;
|
|
80
|
+
timeout?: number;
|
|
81
|
+
secretfields?: string[];
|
|
82
|
+
id?: string;
|
|
83
|
+
}): approvalrequest;
|
|
84
|
+
/** Resolves one pending approval gate: the decision of the acting user closes the gate and returns the execution record with the latency from the raise; already closed gates stay untouched. */
|
|
85
|
+
export declare function resolveapproval(input: {
|
|
86
|
+
requests: approvalrequest[];
|
|
87
|
+
id: string;
|
|
88
|
+
decision: "approved" | "refused";
|
|
89
|
+
actor: string;
|
|
90
|
+
now: number;
|
|
91
|
+
}): {
|
|
92
|
+
requests: approvalrequest[];
|
|
93
|
+
exec?: approvalexec;
|
|
94
|
+
};
|
|
95
|
+
/** Expires every unanswered approval gate past its timeout window: the default disposition of an expired gate is refusal and the records stay for the audit trail. */
|
|
96
|
+
export declare function expireapprovals(requests: approvalrequest[], now: number): approvalrequest[];
|
|
97
|
+
/** Returns the pending and resolved gates of the approval view, newest raise first. */
|
|
98
|
+
export declare function listapprovals(requests: approvalrequest[]): approvalrequest[];
|
|
99
|
+
/** Redacts the call arguments of one approval prompt: every field the user marked secret carries its redaction marker while the rest of the arguments stay visible for review. */
|
|
100
|
+
export declare function redactparams(params: Record<string, unknown>, secretfields: string[]): Record<string, unknown>;
|
|
101
|
+
/** Builds the plain language approval prompt every gate surfaces: the client identity, the called tool, the reason and the full call arguments with the secret fields redacted. */
|
|
102
|
+
export declare function approvalprompt(request: approvalrequest, identity?: clientidentity): string;
|
|
103
|
+
//# sourceMappingURL=gates.d.ts.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type DevThinkPaths } from "./config.js";
|
|
2
|
+
export type DevThinkIdentity = {
|
|
3
|
+
version: 1;
|
|
4
|
+
userId: string;
|
|
5
|
+
deviceId: string;
|
|
6
|
+
createdAt: string;
|
|
7
|
+
};
|
|
8
|
+
export type PairingRecord = {
|
|
9
|
+
id: string;
|
|
10
|
+
userId: string;
|
|
11
|
+
deviceId: string;
|
|
12
|
+
codeHash?: string;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
expiresAt: number;
|
|
15
|
+
usedAt?: string;
|
|
16
|
+
revokedAt?: string;
|
|
17
|
+
};
|
|
18
|
+
export type BrowserSession = {
|
|
19
|
+
id: string;
|
|
20
|
+
userId: string;
|
|
21
|
+
deviceId: string;
|
|
22
|
+
tokenHash: string;
|
|
23
|
+
createdAt: string;
|
|
24
|
+
expiresAt: number;
|
|
25
|
+
revokedAt?: string;
|
|
26
|
+
};
|
|
27
|
+
export declare function normalizePublicUserId(value: string): string;
|
|
28
|
+
export declare function getIdentity(paths: DevThinkPaths): DevThinkIdentity;
|
|
29
|
+
/** Updates the public local-person identifier and migrates active local pairing records. */
|
|
30
|
+
export declare function setIdentityUserId(paths: DevThinkPaths, requestedUserId: string): DevThinkIdentity;
|
|
31
|
+
export declare function createPairing(paths: DevThinkPaths, lifetimeMs?: number): {
|
|
32
|
+
identity: DevThinkIdentity;
|
|
33
|
+
pairingId: string;
|
|
34
|
+
code: string;
|
|
35
|
+
expiresAt: number;
|
|
36
|
+
};
|
|
37
|
+
/** Builds a one-time workbench invitation without embedding any provider credential. */
|
|
38
|
+
export declare function createPairingLink(pagesUrl: string | undefined, gatewayUrl: string | undefined, pairingId: string, oneTimeCode: string): string | undefined;
|
|
39
|
+
export declare function consumePairing(paths: DevThinkPaths, pairingId: string, oneTimeCode: string, sessionLifetimeMs?: number): {
|
|
40
|
+
token: string;
|
|
41
|
+
identity: DevThinkIdentity;
|
|
42
|
+
expiresAt: number;
|
|
43
|
+
} | undefined;
|
|
44
|
+
export declare function verifyBrowserSession(paths: DevThinkPaths, token: string | undefined): BrowserSession | undefined;
|
|
45
|
+
export declare function revokeBrowserSessions(paths: DevThinkPaths): number;
|
|
46
|
+
export declare function pairingStatus(paths: DevThinkPaths): {
|
|
47
|
+
identity: DevThinkIdentity;
|
|
48
|
+
activePairs: number;
|
|
49
|
+
activeSessions: number;
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=identity.d.ts.map
|
package/dist/ids.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Generates a 50-bit compact suffix that avoids ambiguous characters. */
|
|
2
|
+
export declare function compactToken(): string;
|
|
3
|
+
/** Creates a short identifier such as `s_1e9k2m7v3q`; existing longer IDs remain valid inputs. */
|
|
4
|
+
export declare function createCompactId(prefix: string): string;
|
|
5
|
+
/** Identifies the compact format without rejecting existing legacy identifiers. */
|
|
6
|
+
export declare function isCompactId(value: string): boolean;
|
|
7
|
+
//# sourceMappingURL=ids.d.ts.map
|