@tasksai/install 0.1.38 → 0.1.40
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 +34 -0
- package/bootstrap/Install RealtorTasksAI.command +37 -0
- package/bootstrap/Install RealtorTasksAI.ps1 +42 -0
- package/package.json +14 -3
- package/runtime/document_renderer.py +882 -0
- package/runtime/server.py +55 -581
- package/runtime/software_use.py +39 -0
- package/runtime/workflow-requirements.txt +5 -0
- package/runtime/workflows/__init__.py +0 -0
- package/runtime/workflows/account_snapshot.py +33 -0
- package/runtime/workflows/attachments.py +45 -0
- package/runtime/workflows/authority_guides.py +81 -0
- package/runtime/workflows/catalog.py +51 -0
- package/runtime/workflows/catalog_app.py +174 -0
- package/runtime/workflows/catalog_generation.py +186 -0
- package/runtime/workflows/catalog_output.py +312 -0
- package/runtime/workflows/catalog_suggestions.py +51 -0
- package/runtime/workflows/catalog_workspace.py +152 -0
- package/runtime/workflows/cli.py +66 -0
- package/runtime/workflows/document_answers.py +96 -0
- package/runtime/workflows/document_selection.py +50 -0
- package/runtime/workflows/documents.py +243 -0
- package/runtime/workflows/embedded/catalog.html +83 -0
- package/runtime/workflows/embedded/offer-review.html +516 -0
- package/runtime/workflows/embedded/preview.html +36 -0
- package/runtime/workflows/embedded_actions.py +96 -0
- package/runtime/workflows/embedded_demo.py +424 -0
- package/runtime/workflows/folders.py +120 -0
- package/runtime/workflows/gateway.py +157 -0
- package/runtime/workflows/generation_lock.py +26 -0
- package/runtime/workflows/launcher.py +61 -0
- package/runtime/workflows/licensed_delivery.py +46 -0
- package/runtime/workflows/mcp_dev.py +52 -0
- package/runtime/workflows/meeting_plan.py +92 -0
- package/runtime/workflows/model_client.py +26 -0
- package/runtime/workflows/numeric_consistency.py +72 -0
- package/runtime/workflows/public_source_fetch.py +66 -0
- package/runtime/workflows/realtor/__init__.py +0 -0
- package/runtime/workflows/realtor/adapter.py +179 -0
- package/runtime/workflows/realtor/seller_offer/ORIGIN.json +16 -0
- package/runtime/workflows/realtor/seller_offer/__init__.py +0 -0
- package/runtime/workflows/realtor/seller_offer/examples/demo-input.json +414 -0
- package/runtime/workflows/realtor/seller_offer/examples/make_demo.py +44 -0
- package/runtime/workflows/realtor/seller_offer/references/input-contract.md +65 -0
- package/runtime/workflows/realtor/seller_offer/references/source-boundaries.md +16 -0
- package/runtime/workflows/realtor/seller_offer/scripts/__init__.py +0 -0
- package/runtime/workflows/realtor/seller_offer/scripts/build_workbook.mjs +233 -0
- package/runtime/workflows/realtor/seller_offer/scripts/build_workbook.py +163 -0
- package/runtime/workflows/realtor/seller_offer/scripts/offer_engine.py +370 -0
- package/runtime/workflows/realtor/seller_offer/scripts/presentation.py +52 -0
- package/runtime/workflows/realtor/seller_offer/scripts/render_outputs.py +228 -0
- package/runtime/workflows/realtor/seller_offer/scripts/run_package.py +95 -0
- package/runtime/workflows/realtor/seller_offer/tests/test_engine.py +252 -0
- package/runtime/workflows/realtor/seller_offer/tests/test_workbook.mjs +28 -0
- package/runtime/workflows/realtor-release-registry.json +705 -0
- package/runtime/workflows/released_catalog.py +91 -0
- package/runtime/workflows/source_capture.py +82 -0
- package/runtime/workflows/store.py +492 -0
- package/runtime/workflows/table_calculations.py +132 -0
- package/runtime/workflows/template.py +65 -0
- package/runtime/workflows/workspace_launch.py +76 -0
- package/src/index.js +217 -118
- package/src/managed-python.js +63 -0
- package/src/operation-lock.js +22 -0
- package/src/prepared-update.js +86 -0
- package/src/private-workflow.js +116 -0
- package/src/python-runtime.js +50 -0
- package/src/recover-installation.js +30 -0
- package/src/recovery-lock.js +30 -0
- package/src/software-hash.js +24 -0
- package/src/software-use.js +32 -0
- package/src/update-journal.js +24 -0
- package/src/update-recovery.js +72 -0
- package/src/workspace-runtime.js +45 -0
package/README.md
CHANGED
|
@@ -92,3 +92,37 @@ cached, source-linked, and visibly labeled `provisional`; they never substitute
|
|
|
92
92
|
for private MLS rules, brokerage policy, approved forms, product labels,
|
|
93
93
|
permits, payer rules, program notices, certifier standards, insurer or lender
|
|
94
94
|
requirements, agency correspondence, or professional review.
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
## Private workflow development trial (Mac only)
|
|
98
|
+
|
|
99
|
+
This local branch provides an opt-in fictional seller-offer trial. It does not activate a customer product or change a global client profile. From the local installer source:
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
node src/index.js private-workflow --enable-development --install-dir "/absolute/private/trial"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
The destination must not exist. Python 3.11–3.14, Codex and an existing ChatGPT sign-in are required. Setup installs pinned document/MCP dependencies from PyPI into its own Python environment. Double-click `Start TasksAI.command`, place selected fictional files in `Inbox`, and ask to compare offers. The launcher uses isolated Codex exec sessions with only the private workflow connection. AI work consumes the existing account allowance.
|
|
106
|
+
|
|
107
|
+
Close all trial sessions before updating local development code:
|
|
108
|
+
|
|
109
|
+
```sh
|
|
110
|
+
node src/index.js private-workflow --enable-development --update --install-dir "/absolute/private/trial"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Updates verify installed code, preserve the saved workspace, retain previous implementations and refuse dependency changes. This is a development update path, not a production updater. Keep saved exports intact; make copies before editing. Scanned/encrypted documents and professional approval are outside this trial. See the repository's `docs/private-launcher-qualification.md` for the tested path and limits.
|
|
114
|
+
|
|
115
|
+
## Development setup launchers
|
|
116
|
+
|
|
117
|
+
The unreleased `bootstrap/` launchers start the adjacent packaged installer with
|
|
118
|
+
RealtorTasksAI selected. They prepare a private, checksum-verified Node 22.23.2
|
|
119
|
+
copy and reuse it on later runs. They do not require npm or change global PATH.
|
|
120
|
+
The installer separately prepares private Python if needed; SQLite is included.
|
|
121
|
+
Keep the launchers with the complete installer package, including `src/`,
|
|
122
|
+
`runtime/` and `package.json`.
|
|
123
|
+
|
|
124
|
+
`--bootstrap-check` on Mac or `-BootstrapCheck` in PowerShell exercises only the
|
|
125
|
+
Node setup. `TASKSAI_BOOTSTRAP_DIR` selects an isolated test storage directory.
|
|
126
|
+
Windows signing/execution-policy compatibility, Mac download/quarantine behavior,
|
|
127
|
+
final downloadable packaging and the complete customer journey remain release
|
|
128
|
+
checks. These files are not yet a published customer installer.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
set -eu
|
|
3
|
+
package_dir=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
|
4
|
+
test -f "$package_dir/src/index.js" || { echo 'Keep this launcher inside the complete TasksAI setup folder.'; exit 1; }
|
|
5
|
+
case "$(/usr/bin/uname -m)" in
|
|
6
|
+
arm64) arch=arm64; checksum=61130f394c1630d211dd50aecc4353d379480f36d3ac913cd85dbba1aed585c6 ;;
|
|
7
|
+
x86_64) arch=x64; checksum=58e99022c2ff89395576cc7fd4d98cea24bb68081475d5f88b801ee8729fb026 ;;
|
|
8
|
+
*) echo 'This setup supports Apple Silicon and Intel Macs.'; exit 1 ;;
|
|
9
|
+
esac
|
|
10
|
+
setup_root=${TASKSAI_BOOTSTRAP_DIR:-"$HOME/Library/Application Support/TasksAI/Setup"}
|
|
11
|
+
mkdir -p "$setup_root"
|
|
12
|
+
exec 9>>"$setup_root/.node-setup.lock"
|
|
13
|
+
/usr/bin/lockf -t 0 9 || { echo 'Another TasksAI setup is running. Let it finish, then try again.'; exit 1; }
|
|
14
|
+
staging=''
|
|
15
|
+
cleanup() { if [ -n "$staging" ]; then rm -rf -- "$staging"; fi; exec 9>&-; }
|
|
16
|
+
trap cleanup EXIT
|
|
17
|
+
trap 'exit 130' HUP INT TERM
|
|
18
|
+
folder="node-v22.23.2-darwin-$arch"
|
|
19
|
+
node_dir="$setup_root/$folder"
|
|
20
|
+
node_executable="$node_dir/bin/node"
|
|
21
|
+
if [ ! -d "$node_dir" ]; then
|
|
22
|
+
echo 'Preparing the local software needed to start TasksAI…'
|
|
23
|
+
staging=$(mktemp -d "$setup_root/.prepare-node.XXXXXX")
|
|
24
|
+
archive="$staging/node.tar.gz"
|
|
25
|
+
/usr/bin/curl --fail --location --proto '=https' --tlsv1.2 --max-time 120 --max-filesize 100000000 "https://nodejs.org/dist/v22.23.2/$folder.tar.gz" --output "$archive"
|
|
26
|
+
actual=$(/usr/bin/shasum -a 256 "$archive" | /usr/bin/awk '{print $1}')
|
|
27
|
+
[ "$actual" = "$checksum" ] || { echo 'Download verification failed. Nothing was installed.'; exit 1; }
|
|
28
|
+
/usr/bin/tar -xzf "$archive" -C "$staging"
|
|
29
|
+
[ "$("$staging/$folder/bin/node" --version)" = 'v22.23.2' ] || { echo 'The downloaded software did not pass its checks.'; exit 1; }
|
|
30
|
+
mv "$staging/$folder" "$node_dir"
|
|
31
|
+
fi
|
|
32
|
+
[ "$("$node_executable" --version)" = 'v22.23.2' ] || { echo 'The existing TasksAI setup software needs repair. Its files were preserved.'; exit 1; }
|
|
33
|
+
cleanup
|
|
34
|
+
staging=''
|
|
35
|
+
trap - EXIT HUP INT TERM
|
|
36
|
+
if [ "${1:-}" = '--bootstrap-check' ]; then "$node_executable" --version; exit 0; fi
|
|
37
|
+
exec "$node_executable" "$package_dir/src/index.js" realtor "$@"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
param(
|
|
2
|
+
[switch]$BootstrapCheck,
|
|
3
|
+
[Parameter(ValueFromRemainingArguments=$true)][string[]]$InstallerArguments
|
|
4
|
+
)
|
|
5
|
+
$ErrorActionPreference = 'Stop'
|
|
6
|
+
$packageDir = Split-Path $PSScriptRoot -Parent
|
|
7
|
+
if (-not (Test-Path -LiteralPath (Join-Path $packageDir 'src/index.js'))) { throw 'Keep this launcher inside the complete TasksAI setup folder.' }
|
|
8
|
+
$architecture = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString()
|
|
9
|
+
switch ($architecture) {
|
|
10
|
+
'Arm64' { $arch='arm64'; $checksum='fec025a6da31757e3b6af84c5a1628e9d38442ca99a2161091d78f2fcfa35ef3' }
|
|
11
|
+
'X64' { $arch='x64'; $checksum='1177b4137ba5adaa56354ae40f1080c7450e8ae09cecb47da459d1c52ac99f97' }
|
|
12
|
+
default { throw 'This setup supports 64-bit Windows and Windows ARM64.' }
|
|
13
|
+
}
|
|
14
|
+
$setupRoot = if ($env:TASKSAI_BOOTSTRAP_DIR) { $env:TASKSAI_BOOTSTRAP_DIR } else { Join-Path $env:LOCALAPPDATA 'TasksAI/Setup' }
|
|
15
|
+
[IO.Directory]::CreateDirectory($setupRoot) | Out-Null
|
|
16
|
+
$lock = [IO.File]::Open((Join-Path $setupRoot '.node-setup-lock'), [IO.FileMode]::OpenOrCreate, [IO.FileAccess]::ReadWrite, [IO.FileShare]::None)
|
|
17
|
+
$staging = $null
|
|
18
|
+
try {
|
|
19
|
+
$folder = "node-v22.23.2-win-$arch"
|
|
20
|
+
$nodeDir = Join-Path $setupRoot $folder
|
|
21
|
+
$nodeExecutable = Join-Path $nodeDir 'node.exe'
|
|
22
|
+
if (-not (Test-Path -LiteralPath $nodeDir)) {
|
|
23
|
+
Write-Host 'Preparing the local software needed to start TasksAI...'
|
|
24
|
+
$staging = Join-Path $setupRoot ('.prepare-node-' + [guid]::NewGuid().ToString('N'))
|
|
25
|
+
[IO.Directory]::CreateDirectory($staging) | Out-Null
|
|
26
|
+
$archive = Join-Path $staging 'node.zip'
|
|
27
|
+
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
|
28
|
+
Invoke-WebRequest -UseBasicParsing -Uri "https://nodejs.org/dist/v22.23.2/$folder.zip" -OutFile $archive -TimeoutSec 120
|
|
29
|
+
if ((Get-FileHash -Algorithm SHA256 -LiteralPath $archive).Hash.ToLowerInvariant() -ne $checksum) { throw 'Download verification failed. Nothing was installed.' }
|
|
30
|
+
Expand-Archive -LiteralPath $archive -DestinationPath $staging
|
|
31
|
+
$candidate = Join-Path (Join-Path $staging $folder) 'node.exe'
|
|
32
|
+
if ((& $candidate --version) -ne 'v22.23.2' -or $LASTEXITCODE -ne 0) { throw 'The downloaded software did not pass its checks.' }
|
|
33
|
+
Move-Item -LiteralPath (Join-Path $staging $folder) -Destination $nodeDir
|
|
34
|
+
}
|
|
35
|
+
if ((& $nodeExecutable --version) -ne 'v22.23.2' -or $LASTEXITCODE -ne 0) { throw 'The existing TasksAI setup software needs repair. Its files were preserved.' }
|
|
36
|
+
} finally {
|
|
37
|
+
if ($staging -and (Test-Path -LiteralPath $staging)) { Remove-Item -LiteralPath $staging -Recurse -Force }
|
|
38
|
+
$lock.Dispose()
|
|
39
|
+
}
|
|
40
|
+
if ($BootstrapCheck) { & $nodeExecutable --version; exit $LASTEXITCODE }
|
|
41
|
+
& $nodeExecutable (Join-Path $packageDir 'src/index.js') 'realtor' @InstallerArguments
|
|
42
|
+
exit $LASTEXITCODE
|
package/package.json
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tasksai/install",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.40",
|
|
4
4
|
"description": "Shared TasksAI MCP installer CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"tasksai-install": "src/index.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
|
+
"bootstrap/",
|
|
10
11
|
"src/",
|
|
11
12
|
"runtime/server.py",
|
|
12
13
|
"runtime/skill_matcher.py",
|
|
14
|
+
"runtime/software_use.py",
|
|
13
15
|
"runtime/requirements.txt",
|
|
14
|
-
"README.md"
|
|
16
|
+
"README.md",
|
|
17
|
+
"runtime/workflows/",
|
|
18
|
+
"runtime/workflow-requirements.txt",
|
|
19
|
+
"runtime/document_renderer.py"
|
|
15
20
|
],
|
|
16
21
|
"keywords": [
|
|
17
22
|
"mcp",
|
|
@@ -21,7 +26,13 @@
|
|
|
21
26
|
"farmertasksai",
|
|
22
27
|
"farmer",
|
|
23
28
|
"realtortasksai",
|
|
24
|
-
"realtor"
|
|
29
|
+
"realtor",
|
|
30
|
+
"electriciantasksai",
|
|
31
|
+
"hrtasksai",
|
|
32
|
+
"insurancetasksai",
|
|
33
|
+
"mortgagetasksai",
|
|
34
|
+
"mortuarytasksai",
|
|
35
|
+
"restauranttasksai"
|
|
25
36
|
],
|
|
26
37
|
"license": "UNLICENSED",
|
|
27
38
|
"repository": {
|