@foggy-projects/deepseek-harness-plugin 0.4.0-beta.7 → 0.4.0-beta.8
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 +15 -6
- package/THIRD-PARTY-RUNTIME-NOTICES.md +16 -0
- package/docs/PUBLIC-BETA-READINESS.md +51 -0
- package/docs/WINDOWS-BETA-ACCEPTANCE.md +71 -0
- package/experience/linux/README.md +5 -6
- package/experience/linux/prepare.sh +7 -9
- package/lib/client.js +25 -4
- package/lib/index.js +100 -30
- package/lib/python-runtime.js +339 -0
- package/lib/remote-descriptor.js +1 -0
- package/lib/version.js +5 -0
- package/package.json +6 -3
- package/skills/foggy-deepseek-onboarding/SKILL.md +9 -3
- package/skills/foggy-deepseek-onboarding/assets/versions.json +46 -2
- package/skills/foggy-deepseek-onboarding/scripts/doctor.ps1 +2 -2
- package/skills/foggy-deepseek-onboarding/scripts/doctor.sh +1 -2
- package/skills/foggy-deepseek-onboarding/scripts/install.ps1 +2 -2
- package/skills/foggy-deepseek-onboarding/scripts/install.sh +1 -2
- package/skills/foggy-deepseek-onboarding/scripts/invoke-onboarding.ps1 +30 -0
- package/skills/foggy-deepseek-onboarding/scripts/invoke-onboarding.sh +24 -0
- package/skills/foggy-deepseek-onboarding/scripts/onboard.ps1 +2 -2
- package/skills/foggy-deepseek-onboarding/scripts/onboard.sh +1 -2
- package/skills/foggy-deepseek-onboarding/scripts/onboarding.py +27 -22
- package/skills/foggy-deepseek-onboarding/scripts/runtime-start.ps1 +2 -2
- package/skills/foggy-deepseek-onboarding/scripts/runtime-start.sh +1 -2
- package/skills/foggy-deepseek-onboarding/scripts/runtime-stop.ps1 +2 -2
- package/skills/foggy-deepseek-onboarding/scripts/runtime-stop.sh +1 -2
- package/skills/foggy-deepseek-onboarding/scripts/uninstall.ps1 +2 -2
- package/skills/foggy-deepseek-onboarding/scripts/uninstall.sh +1 -2
|
@@ -47,7 +47,7 @@ ACTIVE_PROGRESS: "ProgressReporter | None" = None
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
class ProgressReporter:
|
|
50
|
-
total_steps =
|
|
50
|
+
total_steps = 7
|
|
51
51
|
|
|
52
52
|
def __init__(self, path: str | None, operation_id: str | None, kind: str) -> None:
|
|
53
53
|
self.path = Path(path).expanduser() if path else None
|
|
@@ -996,7 +996,7 @@ def install_command(args: argparse.Namespace) -> dict:
|
|
|
996
996
|
"workspaceMode": "dsh-session-cwd",
|
|
997
997
|
"versions": {name: value.get("version") for name, value in components.items()},
|
|
998
998
|
"repairComponent": repair_component,
|
|
999
|
-
"operations": ["install isolated CLI", "verify Launcher assets", "install global analysis Skill", "write install state"],
|
|
999
|
+
"operations": ["verify private Python", "install isolated CLI", "verify Launcher assets", "install global analysis Skill", "write install state"],
|
|
1000
1000
|
"productionReady": False,
|
|
1001
1001
|
}
|
|
1002
1002
|
if args.dry_run:
|
|
@@ -1008,7 +1008,7 @@ def install_command(args: argparse.Namespace) -> dict:
|
|
|
1008
1008
|
getattr(args, "operation_kind", "initialize"),
|
|
1009
1009
|
)
|
|
1010
1010
|
ACTIVE_PROGRESS = progress
|
|
1011
|
-
progress.update("
|
|
1011
|
+
progress.update("python", 1, "Managed Python ready", fraction=1.0, current_file=sys.executable)
|
|
1012
1012
|
if sys.version_info < (3, 11):
|
|
1013
1013
|
raise OnboardingError(f"Python 3.11+ required, got {sys.version.split()[0]}")
|
|
1014
1014
|
install_root.mkdir(parents=True, exist_ok=True)
|
|
@@ -1020,19 +1020,19 @@ def install_command(args: argparse.Namespace) -> dict:
|
|
|
1020
1020
|
cli_assets = [cli_component[role] for role in ("wheel", "checksums")]
|
|
1021
1021
|
for index, asset in enumerate(cli_assets):
|
|
1022
1022
|
progress.update(
|
|
1023
|
-
"cli",
|
|
1023
|
+
"cli", 2, "Downloading and verifying CLI",
|
|
1024
1024
|
fraction=index / len(cli_assets), current_file=asset["file"],
|
|
1025
1025
|
completed_files=index, total_files=len(cli_assets),
|
|
1026
1026
|
)
|
|
1027
1027
|
verified.append(materialize(
|
|
1028
1028
|
asset, downloads / "cli" / asset["file"], cache_dirs,
|
|
1029
|
-
progress=progress, progress_phase="cli", progress_step=
|
|
1029
|
+
progress=progress, progress_phase="cli", progress_step=2,
|
|
1030
1030
|
progress_index=index, progress_total=len(cli_assets),
|
|
1031
1031
|
progress_message="Downloading and verifying CLI",
|
|
1032
1032
|
replace_corrupt=repair_component == "cli",
|
|
1033
1033
|
))
|
|
1034
1034
|
progress.update(
|
|
1035
|
-
"cli",
|
|
1035
|
+
"cli", 2, "Downloading and verifying CLI",
|
|
1036
1036
|
fraction=(index + 1) / len(cli_assets), current_file=asset["file"],
|
|
1037
1037
|
completed_files=index + 1, total_files=len(cli_assets),
|
|
1038
1038
|
)
|
|
@@ -1042,13 +1042,13 @@ def install_command(args: argparse.Namespace) -> dict:
|
|
|
1042
1042
|
if checksum_entries.get(wheel_asset["file"]) != wheel_asset["sha256"]:
|
|
1043
1043
|
raise OnboardingError("Pinned CLI SHA256SUMS does not match the pinned wheel hash")
|
|
1044
1044
|
if args.skip_cli_install:
|
|
1045
|
-
progress.update("cli",
|
|
1045
|
+
progress.update("cli", 2, "Using existing CLI", fraction=0.65, current_file="foggy-runtime")
|
|
1046
1046
|
cli_command = normalized(args.cli_command or shutil.which("foggy-runtime") or "")
|
|
1047
1047
|
if not cli_command.is_file():
|
|
1048
1048
|
raise OnboardingError("--skip-cli-install requires --cli-command or foggy-runtime on PATH")
|
|
1049
1049
|
cli_mode = "external"
|
|
1050
1050
|
else:
|
|
1051
|
-
progress.update("cli",
|
|
1051
|
+
progress.update("cli", 2, "Installing CLI", fraction=0.65, current_file="Python virtual environment")
|
|
1052
1052
|
python_path = venv_python(install_root)
|
|
1053
1053
|
if not python_path.is_file():
|
|
1054
1054
|
venv.EnvBuilder(with_pip=True).create(install_root / "venv")
|
|
@@ -1063,66 +1063,66 @@ def install_command(args: argparse.Namespace) -> dict:
|
|
|
1063
1063
|
)
|
|
1064
1064
|
cli_command = venv_cli(install_root)
|
|
1065
1065
|
cli_mode = "managed-venv"
|
|
1066
|
-
progress.update("cli",
|
|
1066
|
+
progress.update("cli", 2, "Verifying CLI version", fraction=0.9, current_file="foggy-runtime")
|
|
1067
1067
|
cli_version = command_result([str(cli_command), "--version"], check=True)
|
|
1068
1068
|
actual_cli_version = version_tuple(cli_version["stdout"])[:3]
|
|
1069
1069
|
pinned_cli_version = version_tuple(cli_component["version"])[:3]
|
|
1070
1070
|
version_matches = actual_cli_version >= pinned_cli_version if cli_mode == "external" else actual_cli_version == pinned_cli_version
|
|
1071
1071
|
if not version_matches:
|
|
1072
1072
|
raise OnboardingError(f"Unexpected CLI version: {cli_version['stdout']}")
|
|
1073
|
-
progress.update("cli",
|
|
1073
|
+
progress.update("cli", 2, "CLI ready", fraction=1.0)
|
|
1074
1074
|
|
|
1075
1075
|
launcher_dir = install_root / "launcher"
|
|
1076
1076
|
launcher_assets = components["launcher"]["assets"]
|
|
1077
1077
|
for index, asset in enumerate(launcher_assets):
|
|
1078
1078
|
progress.update(
|
|
1079
|
-
"launcher",
|
|
1079
|
+
"launcher", 3, "Downloading and verifying Launcher",
|
|
1080
1080
|
fraction=index / len(launcher_assets), current_file=asset["file"],
|
|
1081
1081
|
completed_files=index, total_files=len(launcher_assets),
|
|
1082
1082
|
)
|
|
1083
1083
|
verified.append(materialize(
|
|
1084
1084
|
asset, launcher_dir / asset["file"], cache_dirs,
|
|
1085
|
-
progress=progress, progress_phase="launcher", progress_step=
|
|
1085
|
+
progress=progress, progress_phase="launcher", progress_step=3,
|
|
1086
1086
|
progress_index=index, progress_total=len(launcher_assets),
|
|
1087
1087
|
progress_message="Downloading and verifying Launcher",
|
|
1088
1088
|
replace_corrupt=repair_component == "launcher",
|
|
1089
1089
|
))
|
|
1090
1090
|
progress.update(
|
|
1091
|
-
"launcher",
|
|
1091
|
+
"launcher", 3, "Downloading and verifying Launcher",
|
|
1092
1092
|
fraction=(index + 1) / len(launcher_assets), current_file=asset["file"],
|
|
1093
1093
|
completed_files=index + 1, total_files=len(launcher_assets),
|
|
1094
1094
|
)
|
|
1095
1095
|
if os.name != "nt":
|
|
1096
1096
|
(launcher_dir / "start-foggy-runtime.sh").chmod(0o755)
|
|
1097
|
-
progress.update("launcher",
|
|
1097
|
+
progress.update("launcher", 3, "Launcher ready", fraction=1.0)
|
|
1098
1098
|
|
|
1099
1099
|
analysis_assets = components["analysisSkill"]["assets"]
|
|
1100
1100
|
for index, asset in enumerate(analysis_assets):
|
|
1101
1101
|
progress.update(
|
|
1102
|
-
"analysis-skill",
|
|
1102
|
+
"analysis-skill", 4, "Downloading and verifying analysis Skill",
|
|
1103
1103
|
fraction=index / len(analysis_assets), current_file=asset["file"],
|
|
1104
1104
|
completed_files=index, total_files=len(analysis_assets),
|
|
1105
1105
|
)
|
|
1106
1106
|
verified.append(materialize(
|
|
1107
1107
|
asset, downloads / "skill" / asset["file"], cache_dirs,
|
|
1108
|
-
progress=progress, progress_phase="analysis-skill", progress_step=
|
|
1108
|
+
progress=progress, progress_phase="analysis-skill", progress_step=4,
|
|
1109
1109
|
progress_index=index, progress_total=len(analysis_assets),
|
|
1110
1110
|
progress_message="Downloading and verifying analysis Skill",
|
|
1111
1111
|
replace_corrupt=repair_component == "analysis-skill",
|
|
1112
1112
|
))
|
|
1113
1113
|
progress.update(
|
|
1114
|
-
"analysis-skill",
|
|
1114
|
+
"analysis-skill", 4, "Downloading and verifying analysis Skill",
|
|
1115
1115
|
fraction=(index + 1) / len(analysis_assets), current_file=asset["file"],
|
|
1116
1116
|
completed_files=index + 1, total_files=len(analysis_assets),
|
|
1117
1117
|
)
|
|
1118
1118
|
zip_asset = next(item for item in analysis_assets if item["role"] == "zip")
|
|
1119
|
-
progress.update("analysis-skill",
|
|
1119
|
+
progress.update("analysis-skill", 4, "Installing analysis Skill", fraction=0.9, current_file=zip_asset["file"])
|
|
1120
1120
|
analysis_skill = install_analysis_skill(
|
|
1121
1121
|
downloads / "skill" / zip_asset["file"], install_root, components["analysisSkill"]["version"],
|
|
1122
1122
|
zip_asset["sha256"], versions["packageVersion"], args.replace_skill or repair_component == "analysis-skill",
|
|
1123
1123
|
)
|
|
1124
|
-
progress.update("analysis-skill",
|
|
1125
|
-
progress.update("workspace-skills",
|
|
1124
|
+
progress.update("analysis-skill", 4, "Analysis Skill ready", fraction=1.0)
|
|
1125
|
+
progress.update("workspace-skills", 5, "Registering native DSH Skills", fraction=0.1)
|
|
1126
1126
|
onboarding_skill = {
|
|
1127
1127
|
"path": str(skill_root()),
|
|
1128
1128
|
"version": versions["packageVersion"],
|
|
@@ -1130,7 +1130,7 @@ def install_command(args: argparse.Namespace) -> dict:
|
|
|
1130
1130
|
"action": "provided-by-plugin",
|
|
1131
1131
|
"provider": "foggy-managed-skills",
|
|
1132
1132
|
}
|
|
1133
|
-
progress.update("workspace-skills",
|
|
1133
|
+
progress.update("workspace-skills", 5, "Native DSH Skills ready", fraction=1.0)
|
|
1134
1134
|
state = {
|
|
1135
1135
|
"schemaVersion": STATE_SCHEMA,
|
|
1136
1136
|
"installedAt": now_utc(),
|
|
@@ -1139,6 +1139,11 @@ def install_command(args: argparse.Namespace) -> dict:
|
|
|
1139
1139
|
"dataRoot": str(data_root),
|
|
1140
1140
|
"profileStore": str(profile_store),
|
|
1141
1141
|
"workspaceMode": "dsh-session-cwd",
|
|
1142
|
+
"python": {
|
|
1143
|
+
"version": components["python"]["version"],
|
|
1144
|
+
"command": sys.executable,
|
|
1145
|
+
"mode": os.environ.get("FOGGY_ONBOARDING_PYTHON_SOURCE", "managed"),
|
|
1146
|
+
},
|
|
1142
1147
|
"cli": {"version": cli_component["version"], "command": str(cli_command), "mode": cli_mode},
|
|
1143
1148
|
"launcher": {"version": components["launcher"]["version"], "path": str(launcher_dir)},
|
|
1144
1149
|
"skills": {"onboarding": onboarding_skill, "analysis": analysis_skill},
|
|
@@ -1146,7 +1151,7 @@ def install_command(args: argparse.Namespace) -> dict:
|
|
|
1146
1151
|
"securityMode": versions["defaults"]["securityMode"],
|
|
1147
1152
|
"productionReady": False,
|
|
1148
1153
|
}
|
|
1149
|
-
progress.update("state",
|
|
1154
|
+
progress.update("state", 6, "Writing install state", fraction=0.2, current_file="install-state.json")
|
|
1150
1155
|
atomic_json(install_root / "install-state.json", state)
|
|
1151
1156
|
progress.finish()
|
|
1152
1157
|
ACTIVE_PROGRESS = None
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
$ErrorActionPreference = "Stop"
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
& (Join-Path $PSScriptRoot 'invoke-onboarding.ps1') runtime-start @args
|
|
3
|
+
exit $LASTEXITCODE
|
|
4
4
|
exit $LASTEXITCODE
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
4
|
-
|
|
5
|
-
exec "$PYTHON_COMMAND" "$SCRIPT_DIR/onboarding.py" runtime-start "$@"
|
|
4
|
+
exec bash "$SCRIPT_DIR/invoke-onboarding.sh" runtime-start "$@"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
$ErrorActionPreference = "Stop"
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
& (Join-Path $PSScriptRoot 'invoke-onboarding.ps1') runtime-stop @args
|
|
3
|
+
exit $LASTEXITCODE
|
|
4
4
|
exit $LASTEXITCODE
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
4
|
-
|
|
5
|
-
exec "$PYTHON_COMMAND" "$SCRIPT_DIR/onboarding.py" runtime-stop "$@"
|
|
4
|
+
exec bash "$SCRIPT_DIR/invoke-onboarding.sh" runtime-stop "$@"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
$ErrorActionPreference = "Stop"
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
& (Join-Path $PSScriptRoot 'invoke-onboarding.ps1') uninstall @args
|
|
3
|
+
exit $LASTEXITCODE
|
|
4
4
|
exit $LASTEXITCODE
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
4
|
-
|
|
5
|
-
exec "$PYTHON_COMMAND" "$SCRIPT_DIR/onboarding.py" uninstall "$@"
|
|
4
|
+
exec bash "$SCRIPT_DIR/invoke-onboarding.sh" uninstall "$@"
|