@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.
Files changed (29) hide show
  1. package/README.md +15 -6
  2. package/THIRD-PARTY-RUNTIME-NOTICES.md +16 -0
  3. package/docs/PUBLIC-BETA-READINESS.md +51 -0
  4. package/docs/WINDOWS-BETA-ACCEPTANCE.md +71 -0
  5. package/experience/linux/README.md +5 -6
  6. package/experience/linux/prepare.sh +7 -9
  7. package/lib/client.js +25 -4
  8. package/lib/index.js +100 -30
  9. package/lib/python-runtime.js +339 -0
  10. package/lib/remote-descriptor.js +1 -0
  11. package/lib/version.js +5 -0
  12. package/package.json +6 -3
  13. package/skills/foggy-deepseek-onboarding/SKILL.md +9 -3
  14. package/skills/foggy-deepseek-onboarding/assets/versions.json +46 -2
  15. package/skills/foggy-deepseek-onboarding/scripts/doctor.ps1 +2 -2
  16. package/skills/foggy-deepseek-onboarding/scripts/doctor.sh +1 -2
  17. package/skills/foggy-deepseek-onboarding/scripts/install.ps1 +2 -2
  18. package/skills/foggy-deepseek-onboarding/scripts/install.sh +1 -2
  19. package/skills/foggy-deepseek-onboarding/scripts/invoke-onboarding.ps1 +30 -0
  20. package/skills/foggy-deepseek-onboarding/scripts/invoke-onboarding.sh +24 -0
  21. package/skills/foggy-deepseek-onboarding/scripts/onboard.ps1 +2 -2
  22. package/skills/foggy-deepseek-onboarding/scripts/onboard.sh +1 -2
  23. package/skills/foggy-deepseek-onboarding/scripts/onboarding.py +27 -22
  24. package/skills/foggy-deepseek-onboarding/scripts/runtime-start.ps1 +2 -2
  25. package/skills/foggy-deepseek-onboarding/scripts/runtime-start.sh +1 -2
  26. package/skills/foggy-deepseek-onboarding/scripts/runtime-stop.ps1 +2 -2
  27. package/skills/foggy-deepseek-onboarding/scripts/runtime-stop.sh +1 -2
  28. package/skills/foggy-deepseek-onboarding/scripts/uninstall.ps1 +2 -2
  29. 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 = 6
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("preflight", 0, "Checking prerequisites")
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", 1, "Downloading and verifying 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=1,
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", 1, "Downloading and verifying 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", 1, "Using existing CLI", fraction=0.65, current_file="foggy-runtime")
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", 1, "Installing CLI", fraction=0.65, current_file="Python virtual environment")
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", 1, "Verifying CLI version", fraction=0.9, current_file="foggy-runtime")
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", 1, "CLI ready", fraction=1.0)
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", 2, "Downloading and verifying 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=2,
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", 2, "Downloading and verifying 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", 2, "Launcher ready", fraction=1.0)
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", 3, "Downloading and verifying 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=3,
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", 3, "Downloading and verifying 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", 3, "Installing analysis Skill", fraction=0.9, current_file=zip_asset["file"])
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", 3, "Analysis Skill ready", fraction=1.0)
1125
- progress.update("workspace-skills", 4, "Registering native DSH Skills", fraction=0.1)
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", 4, "Native DSH Skills ready", fraction=1.0)
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", 5, "Writing install state", fraction=0.2, current_file="install-state.json")
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
- $pythonCommand = if ($env:FOGGY_ONBOARDING_PYTHON) { $env:FOGGY_ONBOARDING_PYTHON } else { "python" }
3
- & $pythonCommand (Join-Path $PSScriptRoot "onboarding.py") runtime-start @args
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
- PYTHON_COMMAND="${FOGGY_ONBOARDING_PYTHON:-python3}"
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
- $pythonCommand = if ($env:FOGGY_ONBOARDING_PYTHON) { $env:FOGGY_ONBOARDING_PYTHON } else { "python" }
3
- & $pythonCommand (Join-Path $PSScriptRoot "onboarding.py") runtime-stop @args
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
- PYTHON_COMMAND="${FOGGY_ONBOARDING_PYTHON:-python3}"
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
- $pythonCommand = if ($env:FOGGY_ONBOARDING_PYTHON) { $env:FOGGY_ONBOARDING_PYTHON } else { "python" }
3
- & $pythonCommand (Join-Path $PSScriptRoot "onboarding.py") uninstall @args
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
- PYTHON_COMMAND="${FOGGY_ONBOARDING_PYTHON:-python3}"
5
- exec "$PYTHON_COMMAND" "$SCRIPT_DIR/onboarding.py" uninstall "$@"
4
+ exec bash "$SCRIPT_DIR/invoke-onboarding.sh" uninstall "$@"